knockout.js - ko.mapping创建函数,扩展对象

标签 knockout.js knockout-mapping-plugin

是否可以在映射过程中修改(缺少更好的术语)对象的架构?我想是的,我似乎无法使它正常工作。我正在尝试这样的事情:

var data = {
    itemOne: 'someData',
    itemTwo: 'moreData'
}

var mapping = {
    "newItem": {
          create: function(options) {
            return ko.observable(false);
          }
    }
};

ko.mapping.fromJS(data, mapping, _model.observableArrayPart);

最佳答案

这是一个示例,该示例显示自定义数组如何创建和为其定义键,以便您可以使用映射插件来应用更新:http://jsfiddle.net/rniemeyer/LHeQZ/

var data = [
    { id: 1, first: "Bob", last: "Smith" },
    { id: 2, first: "Jim", last: "Jones" },
    { id: 3, first: "Delete", last: "Me" }
];

var updatedData = [
    { id: 1, first: "Robert", last: "Smith" },
    { id: 2, first: "James", last: "Jones" },
    { id: 4, first: "New", last: "Guy" }
];

var Person = function(data) {
    this.id = data.id;
    this.first = ko.observable(data.first);
    this.last = ko.observable(data.last);
    this.full = ko.computed(function() {
        return this.first() + " " + this.last();
    }, this);        
};


var dataMappingOptions = {
    key: function(data) {
        return data.id;        
    },
    create: function(options) {
        return new Person(options.data);
    }        
};


var viewModel = {
    people: ko.mapping.fromJS([]),
    loadInitialData: function() {
        ko.mapping.fromJS(data, dataMappingOptions, viewModel.people);        
    },
    loadUpdatedData: function() {
        ko.mapping.fromJS(updatedData, dataMappingOptions, viewModel.people);  
    }        
};

ko.applyBindings(viewModel);

关于knockout.js - ko.mapping创建函数,扩展对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779969/

相关文章:

javascript - 保留 'exported to pdf' html 表的样式

jquery - 将 Authorization header 附加到 Ajax 请求的正确方法是什么?

javascript - 如何使用 knockout 映射从空值映射到空的可观察数组?

javascript - 使用 ko.mapping.fromJS 的意外行为

javascript - knockout : Cannot read property 'fromJS' of undefined

javascript - 推迟或暂停评估 knockout 中的依赖关系,直到 View 模型完全更新(例如使用映射插件)

javascript - foreach 项目上的 knockout 绑定(bind)未更新

knockout.js - 如果绑定(bind)不适用于 <select>,则 knockout

javascript - Visual Studio Code - 挖空 - 找不到名称 'ko'

javascript - knockout.mapping.js,是否可以只更新映射变量的一部分?