Ember CLI + HTMLBars - 将参数传递给助手

时间:2015-04-22 13:05:41

标签: ember.js ember-cli

我试图将参数从我的HTMLBars模板传递给Helper。

根据文档,我已经创建了一个帮助程序并明确注册了帮助程序:

export default Ember.HTMLBars.makeBoundHelper('is-foo', function(value, options) {
   console.log("value: "+value);
});

但是我收到错误"错误:断言失败:makeBoundHelper生成的助手不支持使用块"

所以我尝试使用Ember.HTMLBars.helper和Ember.HTMLBars.registerHelper建议here,但我收到错误" TypeError:Ember.default.HTMLBars.helper不是函数& #34;

如果我没有明确地重新启动助手:

export default function(value, options) {
   console.log("value: "+value);
};

然后我可以传递一个参数,但它没有得到解决,并且会记录我传递的文字。

所以我尝试了here概述的解决方案,但似乎无法使用CLI

我想要的结果是根据我发送给帮助程序的参数值动态选择组件。我的HTMLBars代码如下所示:

{{#each foo in model}}
  {{is-foo parameter}}
    {{a-component}}
  {{else}}
    {{another-component}}
  {{/is-foo}}
{{/each}}

我不知道接下来该做什么。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

在Ember CLI项目中执行类似的操作,因为帮助文件名是帮助程序名称

export default Ember.HTMLBars.makeBoundHelper(function(value, options) {

而不是

export default Ember.HTMLBars.makeBoundHelper('is-foo', function(value, options) {

修改

根据@TheCompiler的要求,建议作为答案。

执行HTMLBars中的操作

{{if is_parameter}}
  {{a-component}}
{{else}}
  {{another-component}}
{{/if}}

在Controller或Component中计算出的parameter属性

is_parameter: function () {
  var pm = this.get('parameter');

  return (your condition for `pm`)? true : false;
}.property('parameter')

答案 1 :(得分:0)

您想要的行为是在this answer中实现的。

如果您想知道如何实施component帮助程序,可以在此处查看其源代码:helpers/component.js(目前第63行)