3 Stimmen

Kann nicht verstehen, wie man den Alt-Template-Engine in Typeahead 0.10.1 verwendet.

Ich weiß, dass ich Handlebars verwenden kann, um ein benutzerdefiniertes Vorlagenformat mit Typeahead zu erstellen.

$('#ItemLookup2').typeahead(null, {
    displayKey: 'description',
    source: values.ttAdapter(),
    templates: {
    suggestion: Handlebars.compile([
             '{{Barcode}}',
            '{{sellPrice}}',
            '{{description}}'
        ].join(''))
    }
});

Das funktioniert gut.

Aber was ist, wenn ich Mustache.render oder Hogan.compile verwenden möchte?

$('#ItemLookup2').typeahead(null, {
    displayKey: 'description',
    source: values.ttAdapter(),
    templates: {
        suggestion: Hogan.compile([
             '{{Barcode}}',
            '{{sellPrice}}',
            '{{description}}'
        ].join(''))
    }
});

Wirft eine Ausnahme TypeError: that.templates.suggestion ist keine Funktion.

Ich habe auch versucht

   var Suggestion = Mustache.render('{{Barcode}}');
$('#ItemLookup2a').typeahead(null, {
    displayKey: 'description',
    source: values.ttAdapter(),
    templates: {
            suggestion:Suggestion.join('')
    }
});

aber erhalte TypeError: Suggestion.join ist keine Funktion

Könnte mir bitte jemand einige Hinweise geben?

Danke,

Carl

6voto

soooooot Punkte 1719

Dies funktioniert für mich.

var templ =  Hogan.compile([
         '{{Barcode}}',
        '{{sellPrice}}',
        '{{description}}'
    ].join(''));

$('#ItemLookup2').typeahead(null, {
  displayKey: 'description',
  source: values.ttAdapter(),
  templates: {
    suggestion: function (data) { return templ.render(data); }
  }
});

überprüfen Sie den Quellcode, wie typeahead 10 die Template-Funktion aufruft. Ich habe gerade den getFooterHtml-Ausschnitt genommen, getSuggestionsHtml funktioniert fast genauso, aber es übergibt verschiedene Daten und erledigt einige zusätzliche Aufgaben.

            function getFooterHtml() {
                return that.templates.footer({
                    query: query,
                    isEmpty: !hasSuggestions
                });
            }

wir sollten die render-Funktion explizit aufrufen, um für Hogan/Mustache zu rendern. Hogan.compile('Beispiel {{data}}').render({"data": 'hey'}); aber Handlebars kann so funktionieren. Handlebars.compile('Beispiel {{data}}')({"data": 'hey'});

Also, Ausschnitt 1 der Fragen von Handlebars kann funktionieren, aber Hogan/Mustache müssen einige Wrapper-Arbeiten erledigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X