Knockout に「デフォルト」オブジェクトを追加しようとしていますobservableArray
。私のコードが現在立っている方法では、オブジェクトの新しいインスタンスではなく、まったく同じオブジェクトを配列に追加することになります。jQueryの を使ってみ.extend()
ましたが、うまくいかなかったので、入力を探しています。
ここに私の問題を示すデモがあります: http://jsfiddle.net/2c8Fx/
HTML :
<div data-bind="foreach: People">
<input type="text" data-bind="value: Name" />
</div>
<button type="button" data-bind="click: AddPerson">Add Person</button>
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
スクリプト:
function ViewModel() {
var self = this;
self.EmptyPerson = ko.mapping.fromJS({Name: null, Age: null});
self.People = ko.observableArray([self.EmptyPerson]);
self.AddPerson = function() {
self.People.push(self.EmptyPerson);
};
}
ko.applyBindings(new ViewModel());
observableArray
は実際には各インデックスに対して同じオブジェクトへの参照を保持しているため、これは機能しません。
Knockout オブジェクトの新しいインスタンスを作成する最良の方法は何ですか?