无法将值传递给Handlebars registerHelpers
Not able to pass the values to Handlebars registerHelpers
这是我的模板,
<script type="text/x-handlebars" >
Welcome {{name}}, <a href="#">Click here to {{checkStatus status}}</a>
</script>
我的应用程序.js,
App = Ember.Application.create();
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return {
name: "jack",
status: "leaving"
};
}
});
我有一个Handlebars registerHelper,
Handlebars.registerHelper( "checkStatus", function ( status ){
if (status == "leaving" )
{
return 'leave';
}
else
{
return 'stay';
}
});
但我的结果是
Welcome jack, Click here to stay
我不知道registerHelper为什么总是返回"stay"。我的预期输出是
Welcome jack, Click here to leave
给定到jsbin的链接:http://emberjs.jsbin.com/tekoli/1/edit
这是因为registerHelper checkStatus
将下一个参数作为字符串。由于您正在传递"status"
,因此它总是采用else
条件。
如果你可以把这些对象放在一个数组中,那么你可以做以下事情:
{{#each item in model}}
{{CheckStatus item.status}}
{{/each}}
编辑:在对这个话题进行了一些研究之后,我找到了一个解决方案,我想在这里补充一下。
有一个Ember.registerBoundHelper
,它将所有相关数据作为最终参数传递给函数。
请将您的注册助手更新为:
Ember.Handlebars.registerBoundHelper( "checkStatus", function ( status ){
if (status == "leaving" )
{
return 'leave';
}
else
{
return 'stay';
}
});
希望这对你有帮助。感谢
你可以做:
Welcome {{name}}, <a href="#">Click here to {{checkStatus status=status}}</a>
和
Handlebars.registerHelper( "checkStatus", function ( ){
if (this.get('status') == "leaving" )
{
return 'leave';
}
else
{
return 'stay';
}
});
接缝工作。
相关文章:
- Handlebars访问第一个项目,然后访问后面的每个项目(在每个循环中)
- 使用Handlebars'每个'环
- Handlebars帮助程序未获取变量的值
- 在循环Handlebars之前重新排序对象键
- 获取唯一的项目-Handlebars
- Node Express Handlebars帮助程序未返回函数的结果
- 如何使用Handlebars在父视图中动态分配部分视图
- Ember 1.10-升级错误-模板必须是一个函数.您是想调用Ember.Handlebars.compile(“..”
- 使用Handlebars从动态变量渲染组件
- 使用Handlebars获取同级JSON数据,其中单个对象没有父索引键,但多个项有一个索引键
- Handlebars函数导致代码中出现紧密循环
- 如何在Handlebars中获取名称-值对的名称
- Backbone.js&Handlebars.js来创建相对URL
- Meteor Handlebars:{{#each}}块中数组中的值
- 使用Handlebars的Highcharts中的其他工具提示
- Handlebars在渲染时部分打印[对象对象]
- 用于在Backbone中创建列表的Handlebars模板
- Handlebars and Javascript
- Regex and Handlebars
- 在Handlebars.js中的新行上打印输出