把手助手 - 对象不工作
问题描述:
我通过数组控制器来迭代显示项目 - 并且在此视图中,我尝试使用当前地址的上下文执行自定义Handlebar助手 - 但是在我的助手中,对象未定义。把手助手 - 对象不工作
查看:
{{#each temporaryUser.addresses}}
{{#view App.AddressView addressBinding="this"}}
{{addressActions view.address}}
{{{view.address.display}}}
<a {{action deleteAddress target="view"}} class="delete">Delete</a>
{{/view}}
{{/each}}
Handlebars.registerHelper('addressActions', function (address) {
var display = '<div class="actions">';
if (address.current && address.permanent) {
display += '<p>This is my current residential, and permanent address:</p>';
}
else if (address.current && !address.permanent) {
display += '<p>This is my current residential address:</p>';
display += '<a href="#">Make permanent residential address</a>';
}
else if (!address.current && address.permanent) {
display += '<p>This is my permanent address:</p>';
display += '<a href="#">Make current residential address</a>';
}
else {
display += '<a href="#">Make current residential address</a><br/>';
display += '<a href="#">Make permanent residential address</a>';
}
display += '</div>';
return new Handlebars.SafeString(display);
});
答
这不是一个辅助的工作方式。您需要获取从选项上下文对象自己:
Ember.Handlebars.registerHelper('addressActions', function(path, options) {
// passed context objects are stored in options.contexts
// as you are only passing one context, it is the first one in the array
var address = options.contexts.objectAt(0);
}
是这样工作的,因为你可通过多个上下文你的帮手。
你的方式行不通。我有一个类似的帮手:'Ember.Handlebars.helper('ternary',function(condition,a,b){return condition ==='true'?a:b; });',由各种文件组合而成...... – 2015-02-02 19:23:05