Knockout Mapping Plugin - 如何将属性添加到默认映射?

Jak*_*keP 2 knockout.js

我原来有一个像这样的viewModel:

var ObjectViewModel = function (data) {
    var self = this;
    //debugger;
    self.id = data.id;
    self.details = data.details;
    self.children = ko.observableArray(data.children);

    self.deleteChild = function (child) {
        // Pending UI
        // call API here
        // On success, complete
        self.children.remove(child);
    }.bind(self);

};
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用映射插件,因此我可以使子数组元素可观察.我这样做了:

var ObjectViewModel = ko.mapping.fromJS(data);
Run Code Online (Sandbox Code Playgroud)

但我不确定如何将deleteChild方法添加到此.

Jak*_*keP 6

我在这里找到了答案:

将属性添加到使用Knockout JS映射插件创建的视图模型

基本上,对于我需要添加的每个附加属性,我在innerModel上定义了一个新属性,如下所示:

var mapping = {
    create: function(options) {
        var innerModel = ko.mapping.fromJS(options.data);
        innerModel.AdditionalProperty = 'Add Function Here';
        return innerModel;
    }
};
Run Code Online (Sandbox Code Playgroud)