#each
テンプレートループ内で生成されたボタンを取得して、そのクリックアクションを関連付けられたモデルにバインドできないようです。これが問題の簡単なデモです...
アプリの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
そのモデルのメソッドにバインドされると思います。しかし、そうではないようです。他のオブジェクトがクリック アクションを処理しているように見えますが、「保存」ハンドラは定義されていません。ここで何か不足していますか?各項目のボタンが独自のモデルでハンドラーを呼び出すようにするにはどうすればよいですか?
助けてくれてありがとう!