在扩展动态淘汰赛和映射数据(Extending dynamic and mapped data in

2019-10-17 05:04发布

使用Knockout.JS,我试图确定如何最好地在视图模型扩展对象时,他们将通过映射插件加载都和动态添加。 在这个例子中,我加入一个方法的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方法。

Answer 1:

看看这个答案 ,尤其是对的jsfiddle活生生的例子 。

它看起来像你的代码是接近它需要是。

我想你只需要折叠mappingko.mapping.fromJS到您Person的构造。



文章来源: Extending dynamic and mapped data in Knockout