次のようなラムダを持つ口ひげテンプレートがあります。
{{#myfunc}}myvalue{{/myfunc}}
これは、hogan.jsによって次のようにプリコンパイルされています。
define(['hogan'],
function (Hogan) {
var template = new Hogan.Template(function (c, p, i) {
var _ = this;
_.b(i = i || "");
if (_.s(_.f("myfunc", c, p, 1), c, p, 0, 11, 18, "{{ }}")) {
_.rs(c, p, function (c, p, _) {
_.b("myvalue");
});
c.pop();
}
return _.fl();;
});
return function (context, partial, indent) {
return template.render(context, partial, indent);
};
});
次のように、ラムダ関数をBackbone.Modelに渡すMarionette.ItemViewを使用してテンプレートをレンダリングします。
myfunc: function (key) { console.log("key", key); }
奇妙なことに、関数myfuncが呼び出されてコンソールに記録されますが、テンプレートからキーが渡されません。HoganがプリコンパイルモードでLambdaをサポートしていないことについて読みました(約1年前-これは修正されていると思います)-しかし、もしそうなら、myfuncはまったく呼び出されますか?
私はいくつかのデバッグをvendor/hogan.js libに入れました-hoganはラムダタグ間の値(ここではmyvalue)を見ることができないようです。
これを見た人はいますか?