把手助手 - 对象不工作

问题描述:

我通过数组控制器来迭代显示项目 - 并且在此视图中,我尝试使用当前地址的上下文执行自定义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); 
} 

是这样工作的,因为你可通过多个上下文你​​的帮手。

+0

你的方式行不通。我有一个类似的帮手:'Ember.Handlebars.helper('ternary',function(condition,a,b){return condition ==='true'?a:b; });',由各种文件组合而成...... – 2015-02-02 19:23:05