gpt4 book ai didi

javascript - 我怎样才能复制这个 knockout 可观察到的?

转载 作者:行者123 更新时间:2023-12-02 18:42:22 26 4
gpt4 key购买 nike

我正在尝试将“默认”对象添加到我的 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 对象的新实例的最佳方法是什么?

最佳答案

function ViewModel() {
var self = this;

self.People = ko.observableArray();

self.AddPerson = function() {
self.People.push(ko.mapping.fromJS({Name: null, Age: null}));
};
}

ko.applyBindings(new ViewModel());

我这样做了,它的工作原理就像你想象的那样。我希望这会有所帮助。

查看一个工作示例 here

关于javascript - 我怎样才能复制这个 knockout 可观察到的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com