2015-06-16 3 views
1
Handlebars.compile({{FOO bar}})({ bar: "baz" }); 

--> 

bar: baz 

В моем Handlebars.js помощнике FOO мне нужно получить доступ к ключу, который был использован для доступа к объекту. Как мне это сделать? Мне нужно это для отладки, поэтому решение не должно быть очень чистым или эффективным.Handlebars.js: как получить ключ объекта из шаблона

Вот скрипка для Вас, чтобы играть: http://jsfiddle.net/eygs74yL/

+0

Это невозможно. Передайте имя в качестве дополнительного параметра. –

+0

Это: http://jsfiddle.net/pdq51gra/. Есть ли лучший способ сделать это? –

+0

BTW, меня особенно интересует получение ключа для значений «undefined». И *, что *, возможно, невозможно без патча Handlebars.js. Интересно, какой был бы лучший способ запланировать его ... –

ответ

2

Нужно установить флаг trackIds при компиляции шаблона.

Handlebars.registerHelper("FOO", function(arg, options) { 
    return options.ids[0] + ": " + arg; 
}); 

$("div").html(
    Handlebars.compile("{{FOO bar}}", { trackIds:true } 
)({ bar: "baz" })); 

Fiddle: http://jsfiddle.net/eygs74yL/1/

+0

Это умно. Параметры trackIds выглядят удобно. –