我正在尝试将一个参数从我的HTMLBars模板传递给帮助程序。
根据文档,我创建了一个助手并显式地注册了该助手:
export default Ember.HTMLBars.makeBoundHelper('is-foo', function(value, options) {
console.log("value: "+value);
});但是我得到了一个错误" error :断言失败: makeBoundHelper生成的帮助程序不支持与块一起使用“
因此,我尝试使用Ember.HTMLBars.helper和Ember.HTMLBars.registerHelper作为建议的here,但我得到了错误"TypeError: Ember.default.HTMLBars.helper不是一个函数“
如果我不明确地提高帮助者的能力:
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}}我不知道下一步该怎么办。任何帮助都是非常感谢的。
发布于 2015-04-22 15:42:50
在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}}在控制器或组件中,计算出的parameter属性
is_parameter: function () {
var pm = this.get('parameter');
return (your condition for `pm`)? true : false;
}.property('parameter')发布于 2015-04-22 18:15:08
您想要的行为是在this answer中实现的。
如果您想知道component助手是如何实现的,您可以在这里查看它的源代码:helpers/component.js (目前是第63行)
https://stackoverflow.com/questions/29798507
复制相似问题