Knockout.js 敲除映射如何添加和更新
我有一个js对象,如下所示Knockout.js 敲除映射如何添加和更新,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我有一个js对象,如下所示 {Messages: [ {Content: "some content", Id: "203", IsNew: false, Subject: "some Subject"}, .... ]} 我希望“IsNew”至少能被观察到。为此,我使用了ko.mapping插件 //Within success of ajax call var vm = ko.mapping.fromJS(data) 但我也需要在我的虚拟机上提供一
{Messages: [
{Content: "some content",
Id: "203",
IsNew: false,
Subject: "some Subject"},
....
]}
我希望“IsNew”至少能被观察到。为此,我使用了ko.mapping插件
//Within success of ajax call
var vm = ko.mapping.fromJS(data)
但我也需要在我的虚拟机上提供一个可观察的“SeleceedMessage”和一个SetSelected函数。但我不确定最好的方式,这些成为我的虚拟机的一部分
有人能解释一下我如何在我的虚拟机上包含这些属性,以及当我用更新的消息列表更新虚拟机时,如何保持这些属性不变吗?听起来您需要设置viewModel映射来向消息添加扩展属性。它应该是这样的:
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);
});
您可以在使用“创建”自定义对象构造和使用“更新”自定义对象更新部分中阅读更多内容您看过knockoutjs教程了吗?