我正在尝试向我的 Knockout 添加一个“默认”对象observableArray
。我的代码目前的方式,我最终将完全相同的对象添加到数组中,而不是对象的新实例。我尝试使用 jQuery's .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 对象的新实例的最佳方法是什么?