【问题标题】:How to pass variables to handlebars helpers如何将变量传递给车把助手
【发布时间】:2014-09-25 00:38:06
【问题描述】:

我正在创建车把助手:

export default Ember.Handlebars.registerHelper('if-eq', function(v1, v2, options) {
if (this.get(v1) === this.get(v2)) {
return options.fn(this);
}
return options.inverse(this);
});

然后像这样执行:

{{#each item in model.cons }}
{{#if-eq model.currentUser.id item.record_poster_id}}
<div class="td author current">{{model.currentUser.name}}</div>
{{else}}
<div class="td author remote">{{model.remoteUser.name}}</div>
{{/if-eq}}
{{/each}}

我收到了诸如文本“model.currentUser.id”之类的变量,使用 this.get(v1) 我可以获得价值。 但是 this.get 仅适用于 model.currentUser.id 而不适用于 item.record_poster_id (可能是因为它是循环中的变量)

问题:如何按值传递变量?

回答:How to compare values in each?

【问题讨论】:

    标签: ember.js template-engine


    【解决方案1】:

    您正在传递变量的值,您只是在错误地访问它们。你为什么使用this.get(v1) 来访问参数?只需使用v1。已经是你传入的值了,你不需要对它做任何特别的事情。

    另外,我不确定 Handlebars 语法是否有效。 Ember 可能会要求您执行this 之类的操作。

    【讨论】:

    • console.log(v1,v2);返回值如下:"model.currentUser.id","item.record_poster_id"
    • 抱歉,我应该多加注意。你的语法是正确的,你的方法调用不正确。使用helper 而不是registerHelper。
    • helper 也不起作用:“未捕获的错误:断言失败:registerBoundHelper 生成的助手不支持与 Handlebars 块一起使用。”
    • 这是我在回答中链接到的问题。我以前从未写过块助手,所以我不能 100% 确定语法,但该线程应该可以帮助你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2016-01-07
    相关资源
    最近更新 更多