/ / Ocena funkcji stylu wąsy za pomocą szablonu underscore.js - javascript, underscore.js, wąsy

Ocena funkcji stylu wąsów za pomocą szablonu underscore.js - javascript, underscore.js, wąsy

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 № 1

Funkcja 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()}}");