Web ページの読み込み時にいくつかの初期値が設定されているノックアウトの監視可能な配列があり、ユーザーがページを操作するときに splice メソッドを介して監視可能な配列に追加したいと考えています。配列に追加しようとしている新しいアイテムは、配列内の元のアイテムとまったく同じプロパティを持っていますが、新しいアイテムを既存の配列にスプライスしようとすると、ノックアウト バインディング エラーが発生します。例: "エラー: バインディングを解析できません。メッセージ: ReferenceError: ContactName が定義されていません。バインディング値: テキスト: ContactName ". このエラーは、問題のプロパティが新しい配列のすべての項目に存在する場合でも発生します。バインディングを自動的に更新したいので、基礎となる配列オブジェクトではなく、Knockout 観測可能配列でスプライスを実行しようとしています。vmContacts.Contacts.splice(vmContacts.Contacts().length,0,contactData2);
.
ここでフィドルの例を作成したので、実際の動作を確認できます: http://jsfiddle.net/ak47/pMFwe/。[連絡先の追加] ボタンをクリックすると、ブラウザー コンソールにエラーが表示されます。
新しいオブジェクトの配列をループして、追加する必要がある各アイテムに対して push() を実行するのを避けたいのですが、スプライスが機能するはずですが、そうではありません。これは Knockout の既知の問題ですか、それとも何か間違っていますか? 助けてくれてありがとう!