#each
テンプレートループ内で生成されたボタンをクリックして、関連するモデルにクリックアクションをバインドすることはできません。ここでは、問題の迅速なデモは...だEmber.js - 各ループからボタンのアクションを独自のモデルにバインド
Ember.js
アプリのセットアップ:
window.Contacts = Ember.Application.create();
Contacts.Person = Ember.Object.extend({
first: '',
last: '',
save: function() {
// send updated information to server.
}
});
Contacts.contactsList = Ember.ArrayController.create({
content:[],
init: function() {
this.pushObject(Contacts.Person.create({
first:'Tom',
last:'Riddle'
}));
}
});
テンプレート:
<script type="text/x-handlebars">
{{#each Contacts.contactsList}}
<li>
{{view Ember.TextField valueBinding="first" viewName="firstname"}}
{{view Ember.TextField valueBinding="last" viewName="lastname"}}
<button {{action "save" on="click"}}>Save</button>
</li>
{{/each}}
</script>
問題:このシンプルで
ので、アイデアデモのシナリオは、各レコードの「保存」ボタンが、それ自身のモデルの状態を保存するアクションをトリガーすることです。ただし、[保存]ボタンをクリックすると、エラーを与える:
Uncaught TypeError: Cannot call method 'call' of undefined
私の仮定は、ボタンのアクションとして「保存」を指定すると、そのモデルのsave
メソッドにそれを結合するであろうということでしょう。しかし、これは当てはまりません。他のいくつかのオブジェクトはクリックアクションを処理しているように見え、 "保存"ハンドラは未定義です。私はここに何かを逃していますか各広告申込情報のボタンを独自のモデルでハンドラー呼び出しするにはどうすればよいですか?
ありがとうございました!
で、各ループの内側に述べたアクションのアプローチを使用する第2のアプローチは、私を助け! – Franco
グローバルルックアップは推奨されていません – Sisir