https://github.com/emberjs/dataを参考に、ember-data を使おうとしています。
具体的には、配列コントローラーを使用して、データベース内のすべての「Person」オブジェクトを表示しようとしています。また、ユーザーが新しい「人」を作成できるようにしたいと考えています。
私は動作する次のコードを持っています:
App.peopleController = Em.ArrayController.create
content: App.store.findAll(App.Person)
newPerson: (name) ->
App.store.create App.Person,
name: name
@set('content', App.store.findAll(App.Annotation))
ただし、新しい人が作成されるたびに content プロパティをリセットするのは効率が悪いようです。最後の行を削除して、コードを次のように変更すると:
App.peopleController = Em.ArrayController.create
content: App.store.findAll(App.Person)
newPerson: (name) ->
App.store.create App.Person,
name: name
newPerson 呼び出しのたびに新しいビューが作成されますが、同じオブジェクトが複製されます。基本的に何が起こっているかというと、新しいテンプレートはすべて、毎回新しいオブジェクトではなく、最初に作成されたオブジェクトを使用します。これは次のバグに関連していると思います: https://github.com/emberjs/data/issues/11。
参考までに、私のテンプレート ロジックは次のとおりです。
{{#each App.peopleController}}
{{#view App.PersonView contentBinding="this"}}
{{#with content}}
Client id is {{clientId}}
{{/with}}
{{/view}}
{{/each}}
コードの 2 番目のバージョン (行のあるバージョン) を使用すると、@set('content', App.store.findAll(App.Annotation))
すべての Person オブジェクトに対して clientId が複製されます。最初のバージョンでは、クライアント ID は正しいです。
誰かがここで光を当てることができますか? 私はこれを正しくやっていますか?私の本能はこれがバグだと言っていますが、よくわかりません。