我的代碼不會在由knockout.mapping.fromJS映射的挖空視圖模型的子元素下創建新屬性。Knockout.js將屬性添加到子元素
我有:
//model from Entity Framework
console.log(ko.mapping.toJSON(model));
var viewModel = ko.mapping.fromJS(model, mappingOption);
ko.applyBindings(viewModel);
console.log(ko.mapping.toJSON(viewModel));
第一輸出的console.log:
{
"Id": 0,
"CurrentUser": {
"BoardIds": [
{
"Id": 0
}
],
"Id": 1,
"UserName": "foo",
"IsOnline": true
},
"Boards": []
}
然後是mappingOption是:
var mappingOption = {
create: function (options) {
var modelBase = ko.mapping.fromJS(options.data);
modelBase.CurrentUser.UserName = ko.observable(model.CurrentUser.UserName).extend({ rateLimit: 1000 });
//some function definitions
return modelBase;
},
'CurrentUser': {
create: function (options) {
options.data.MessageToPost = ko.observable("test");
return ko.mapping.fromJS(options.data);
}
}
};
我稱爲this post以創建自定義映射,但它似乎不起作用,因爲第二個console.log輸出與第一個相同的JSON。
此外,我試圖創建基於this thread和another one的嵌套映射選項,但它不起作用。
var mappingOption = {
create: function (options) {
//modelBase, modifing UserName and add the functions
var mappingOption2 = {
'CurrentUser': {
create: function (options) {
return (new(function() {
this.MessageToPost = ko.observable("test");
ko.mapping.fromJS(options.data, mappingOption2, this);
})());
}
}
}
return ko.mapping.fromJS(modelBase, mappingOption2);
}
};
如何正確添加一個新的屬性到原始viewmodel?
謝謝回答,我來輸出由toJS刪除「映射」管理整個視圖模型。但是,的確,我的興趣是將新屬性添加到視圖模型的子數組的方式。我的代碼成功地將一個屬性添加到視圖模型的根級別,但是當涉及到嵌套級別時,它失敗了。 –
@ seed.of.apricot見編輯。 –
@ seed.of.apricot這是否解決了您的問題,或者您仍然無法使其工作? –