1

配列コントローラーを反復処理して項目を表示しています。このビュー内で、現在のアドレスのコンテキストでカスタム ハンドルバー ヘルパーを実行しようとしていますが、ヘルパー内ではオブジェクトが未定義です。

意見:

{{#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);
});
4

1 に答える 1

0

これはヘルパーの働き方ではありません。options オブジェクトから自分でコンテキストを取得する必要があります。

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);
}

複数のコンテキストをヘルパーに渡す可能性があるため、このように機能します。

于 2013-02-19T12:56:27.573 に答える