Czy można używać funkcji underscore.js z wywołaniami funkcji stylu wąsy? Na underscore.js podręcznik ma przykład jak obsługiwać składnię wąsów:
_.templateSettings = {
interpolate : /{{(.+?)}}/g
};
var template = _.template("Hello {{ name }}!");
template({name : "Mustache"});
=> "Hello Mustache!"
Jednak oprócz zmiennych mustache.js automatycznie wykrywa, kiedy obiekt jest funkcją, a następnie ją ocenia. Z podręcznika użytkownika mustache.js:
var view = {
title: "Joe",
calc: function () {
return 2 + 4;
}
};
var output = Mustache.render("{{title}} spends {{calc}}", view);
Jednak użycie underscore.js do renderowania tych ostatnich skutkuje:
var template = _.template("{{title}} spends {{calc}}");
template(view);
"Joe spends function () {
return 2 + 4;
}"
Odpowiedzi:
0 dla odpowiedzi № 1Funkcja szablonu podkreślenia nie wykonuje sprawdzenia typu i zawsze zwraca wartość właściwości / zmiennej.
https://github.com/documentcloud/underscore/blob/master/underscore.js#L1161
Ale możesz użyć szablonu oceny podkreślenia, aby uruchomić funkcje javascript.
Możesz więc wykonać następujące czynności:
var template = _.template("<% var spend = calc() %>{{title}} spends {{ spend }}");
To oczywiście używa domyślnego bloku oceny w stylu ERB, więc możesz napisać własne wyrażenie do evaluate
w _.templateSettings
jeśli wolisz użyć innej składni.
0 dla odpowiedzi nr 2
Najprostszym sposobem jest sprawdzenie funkcji, ponieważ Underscore pozwala na dowolny JavaScript w bloku szablonu.
var template = _.template("{{title}} spends {{calc()}}");