gpt4 book ai didi

javascript - 在 Knockout 中扩展动态和映射数据

转载 作者:行者123 更新时间:2023-11-28 02:43:55 25 4
gpt4 key购买 nike

使用 Knockout.JS,我试图确定当对象通过映射插件加载并动态添加时如何最好地扩展 View 模型中的对象。在此示例中,我将方法 addChild 添加到 Person 对象。

在映射期间扩展:

    var myPersonModel = function (data) {
ko.mapping.fromJS(data, {}, this);

this.addChild = function () {
this.children.push(new Child());
} .bind(this);
}

var mapping = {
'people': {
create: function (options) {
return new myPersonModel(options.data);
},
}
}

var viewModel = ko.mapping.fromJS(data, mapping);

动态创建期间扩展:

    function Person(id, name, children) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.children = ko.observable(children);
this.addChild = function () {
this.Forms.push(new Child());
} .bind(this);
}

但在我看来,必须有一种更简单的方法来做到这一点,这样我就不需要重复自己,并且映射对象和新对象都可以获得 addChild 方法。

最佳答案

看看this answer ,尤其是live example on JSFiddle .

看起来您的代码已经接近它所需要的了。

我认为您只需将 mappingko.mapping.fromJS 折叠到您的 Person 构造函数中即可。

关于javascript - 在 Knockout 中扩展动态和映射数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12219238/

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