javascript - Handlebars 在 #each 中的不同对象中到达一般上下文对象中的键值对

标签 javascript localization handlebars.js

我有一个 Handlebars 使用的模板和我的上下文,如下所示:

var context = {
    abc: ["a","b","c","d"],
    xyz: {
         words: {
             a: 1,
             b: 2,
             c: 3,
             d: 4
         }
    }
}
var template = Handlebars.compile(tpl);
var output = template(context);

到这里为止一切都很好。但我需要做类似的事情:

{{#each abc }}
 <li><a data-toggle="tab" href="#{{ ../xyz.words[this] }}"> {{ this }} </a></li>
{{/each }}

我希望收集 xyz.words 上下文中 key 给出的值,但我什么也没得到。相反,如果我仅使用 {{ this }} 它可以正常工作并从 abc 返回一个值。

我在这里缺少什么?

编辑:

顺便说一句,我尝试使用助手,这就是我所做的:

Handlebars.registerHelper("whatis", function(key){
       return  xyz.words[key];
    });

{{#each abc }}
 <li><a data-toggle="tab" href="#{{ whatis this] }}"> {{ this }} </a></li>
{{/each }}

最佳答案

您需要创建一个帮助程序才能使用基于变量的动态 key (running example) 访问对象:

模板:

{{#each abc }}
 <li> 
     {{#getObjectValue ../xyz.words key=this}}
     <a data-toggle="tab" href="#{{this}}">
     {{/getObjectValue}}
     {{ this }} </a>
 </li>
{{/each }}

代码:

Handlebars.registerHelper('getObjectValue', function(object, options) {
    return options.fn(object[options.hash.key]);
});
var template = Handlebars.compile($("#template").html());
$("#target").html(template(context));

关于javascript - Handlebars 在 #each 中的不同对象中到达一般上下文对象中的键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23908111/

相关文章:

javascript - Handlebars :compile - Cannot read property 'filter' of undefined use

javascript - 检测页面上的自动点击

javascript - AngularJS 不会覆盖内置验证器

ios - 使用 secureTextEntry 为 UITextField 选择键盘语言

ios - 如何阅读本地化的 plist 作为字典?

javascript - 在 Ember Handlebars 的嵌套循环中获取索引计数器

javascript - 使用 javascript 格式化货币的 Handlebars 功能

javascript - 克隆并更改新的 radio 检查

javascript - 访问检查 meteor.methods/meteor.call

android - 本地化代码不起作用