来自帮助者的EmberJS条件不起作用

时间:2016-05-23 13:24:55

标签: ember.js handlebars.js

我有帮手istrue.js:

import Ember from 'ember';

export default Ember.Helper.helper(function() {
  return true;
});

在我的模板中,我使用:

{{#if istrue}}
    true
{{else}}
    false
{{/if}}

因此,在浏览器窗口中,我总是得到" false"。

问题出在哪里?

2 个答案:

答案 0 :(得分:2)

isTrue指的是与模板相关的属性(在这种情况下,它可能是控制器的属性或组件的属性。

由于isTrue未定义,{{if}}帮助程序会评估 false 分支。

我想你想要实现的目标如下:

{{istrue}}

{{istrue param}}

在第二种情况下,将参数添加到辅助函数:

import Ember from 'ember';

export default Ember.Helper.helper(function(param) {
  return true;
});

之后也应该可以组合:

{{#if (istrue param)}}

更多详细信息,请访问:Ember Guides - Writing own helpers

答案 1 :(得分:1)

请以这种方式使用余烬帮手。将以下代码粘贴到istrue.js帮助文件中。

import Ember from 'ember';

export function istrue(/*, hash*/) {

    return true;
}

export default Ember.Helper.helper(istrue);

而不是安装以下插件

ember install ember-truth-helpers

这个插件会在ember模板中给你真实条件

现在,您可以在模板文件中使用以下代码来获取结果

{{#if (eq (istrue) true)}}
    true
{{else}}
    false
{{/if}}

它将返回true,因为helper返回true。

https://github.com/jmurphyau/ember-truth-helpers