私はエンバーから始めたばかりなので、この質問がばかげていると思われる場合はご容赦ください。属性名を持つ人のリストを保持する ArrayController があります。次のハンドルバー呼び出しを使用して、コンテンツ配列内の各名前のテキスト フィールドを作成しています。
{{#each App.Controller}}
{{view Em.TextField placeholder="Name" valueBinding="name" }}
{{/each}}
これは期待どおりに機能しています。最初にコンテンツ配列をいくつかの名前で初期化し、各エントリのテキスト フィールドを表示します。ただし、pushObject を使用して人をコンテンツ配列に追加すると、新しいテキストフィールドは追加されません! コンソールを使用すると、人々がコンテンツに追加されていることがわかります。ビューは単に変更されていません。まだ見知らぬ人ですが、次の方法で人を追加すると、すべてが期待どおりに機能します。
this.pushObject(newPerson);
var copy = this.get('content');
this.set('content',[]);
this.set('content',copy);
この方法で人を追加すると、新しく追加された人の別のテキスト フィールドが表示されます。ember のドキュメントには、pushObject() は KVO に準拠していると書かれていますが、それは依存関係を更新し、ビューを更新する必要があるという意味ではありませんか? ビューを更新するたびに、rerender() またはその他の関数を呼び出して pushObject() を更新する必要がありますか?それとも、ビューを更新するたびに配列をコピーする必要がありますか? ありがとう!