淘汰赛映射如何添加和更新(Knockout mapping how to add and updat

2019-10-17 18:54发布

我有一个js对象,如下所示

{Messages: [
    {Content: "some content",
    Id: "203",
    IsNew: false,
    Subject: "some Subject"},
    ....
]}

我想为“是否新款”到至少是可观察的。 要做到这一点我用的是ko.mapping插件

//Within success of ajax call
var vm = ko.mapping.fromJS(data)

但我也有一个需要我的虚拟机中的“SelecetedMessage”观察到的和的setSelected功能。 但林不知道这些是我的虚拟机的一部分的最佳方式。

可能有人解释我是如何可能包括在我的VM这些属性,当我与更新的邮件列表更新VM,如何保持这些属性不变?

Answer 1:

这听起来像你需要建立一个视图模型映射到扩展属性添加到您的消息。 它应该是这个样子:

var Message = function(data) {
   var self = this;
   ko.mapping.fromJS(data, { }, self);
   self.isNew = ko.observable(false);
   // Add more message-specific observables or functions you need here
};

var viewModelMapping = {
    'Messages': {
     create: function(options) {
            return new Message(options.data);
        }
    };

var ViewModel = function(data) {
    var self = this;
    // Add more view model-specific observables or functions you need here

    ko.mapping.fromJS(data,viewModelMapping,self);
}

$(document).ready(function () {
    vm = new ViewModel(initialViewModelData);
    ko.applyBindings(vm);
});


您可以使用“创造”自定义对象的更新使用“更新”部分阅读更多的自定义对象的构造 这里



文章来源: Knockout mapping how to add and update