我正在尝试为Handlebars / Ember应用程序创建一个自定义的“ if_eq”帮助程序。 使用以下语法调用该帮助程序:{{#if_eq item.name'bob'}},但是正在接收2个要比较的字符串值(字面上是'item.name'和'bob'),而不是“ item”的值.name”。 想知道我可能做错了什么。 谢谢!

相关的代码片段如下所列又创造了jsbin来说明这个问题在这里

助手代码

Handlebars.registerHelper('if_eq', function(a, b, opts) {
    console.log( "Comparing ", a, b);
    if(a == b)
        return opts.fn(this);
    else
        return opts.inverse(this);
});

模板代码

<ul>
    {{#each item in model}}
        {{#if_eq item.name 'bob'}}
            <li>We have a bob here!</option>
        {{else}}
            <li>A non-bob</li>
        {{/if_eq}}
    {{/each}}
</ul>

#1楼 票数:2 已采纳

车把帮手的绑定属性不能很好地发挥作用。

通常,您需要在模板中避免这种逻辑。 具体来说,要么在控制器上创建一个方法,要么在对象本身上创建一个,这样您就可以说: if item.isBob

例如http://emberjs.jsbin.com/fudadugemu/2/edit?html,js,输出

或者您可以使用一个组件并对其进行一些有趣的操作,例如:

http://emberjs.jsbin.com/buyeqenumo/2/edit

(尝试更改鲍勃输入)

  ask by MackelRow translate from so

未解决问题?本站智能推荐:

1回复

车把帮手的Ember View无法检测何时单击自身

我有一个用于车把帮手的视图,我希望它在单击时可以做一些事情。 不过什么也没发生。 {{#glass-Panel}} {{/glass-Panel}}应该知道何时使用(this)单击它,为什么这对我不起作用?
1回复

如何访问车把帮手中的父项?

我有一个模板。 现在,在matchTable帮助器中,我正在获取table.tableName值,但是对于dbModel.selectedTable is undefined 。 dbModel.selectedTable不是实际模型的一部分,我将其添加到控制器中,如下所示。
1回复

车手帮手作为标签

我使用正则表达式将字符串中的**text in bold**替换为<strong>text in bold</strong> ,然后在我的EmberJS模板上使用{{{message}}}显示message 。 问题是我也想用{{#link-to "hashtag" "
1回复

车把,如何为助手返回的值设置条件

我正在使用车把帮助器来计算数组中有多少行。 如果大于2,则返回true,并且按预期方式工作。 看起来像这样: 问题是我想在我的hbs模板中设置一个条件,以在输出该值之前检查该值是否为true。 如果不是真的,我不希望它输出。 我希望我可以做这样的事情: 不幸的是,这是无效
1回复

灰烬帮手,等待一个ajax请求

我在初始化方法调用ajax请求时编写了一个余烬组件 这是可行的,但不幸的是我的ember帮助程序没有等待ajax请求,并说控制台日志中的“数据”未定义 如何使我的余烬助手等待一个ajax请求?
3回复

{{#each}}内的车把助手

我尝试在{{#each}}循环中调用已注册的车把助手。 不幸的是,Ember.js抱怨是因为它试图将助手解析为控制器的属性而不是助手。 Handlebars.registerHelper('testHelper', function(name) { return 'foo: ' +
3回复

Ember js在控制器内使用把手帮手?

我有一个帮助方法,将数字映射到文本 - 我可以使用{{getStatusText 1}}在视图中使用帮助器 但是如何在ObjectController内的动作中使用帮助器呢? 这显然不起作用。 还有什么其他方法? 为了更好地理解,这里是jsbin
7回复

如何查看车把模板中的所有可用变量

我正在开发我的第一个 Ember.js 应用程序,但在连接所有点时遇到了一些问题。 如果我能在给定的把手模板中看到所有可用的变量,那将非常有帮助。 有一个相关的问题,但您必须知道使用它的范围内的变量: 如何在 Handlebars 模板中添加 console.log() JavaScript 逻辑