我正在通過Knockoutjs網站上的映射插件示例工作。將屬性添加到通過使用Knockout JS映射插件創建的視圖模型
這是示例數據。
var data = {
name: 'Scott',
children: [
{ id : 1, name : 'Alice' }
]
}
的例子顯示瞭如何覆蓋一個孩子的映射,但我怎麼改變爲基本對象的映射。
例如,如果我想爲Scott添加一個「FavouriteChild」屬性,我該如何去解決它?
我假設我需要在基礎映射上使用create函數,但是我找不到任何地方的語法示例。
var myChildModel = function(data) {
ko.mapping.fromJS(data, {}, this);
this.nameLength = ko.computed(function() {
return this.name().length;
}, this);
}
var mapping = {
'children': {
create: function(options) {
return new myChildModel(options.data);
}
}
}
var viewModel = ko.mapping.fromJS(data, mapping);
編輯:從接受的答案下面,我發現這個工作
<span data-bind='text: AdditionalProperty'>
淘汰賽代碼
var mapping = {
create: function (options) {
//customize at the root level.
var innerModel = ko.mapping.fromJS(options.data);
innerModel.AdditionalProperty = 'Hello World';
return innerModel;
}
}
var viewModel = ko.mapping.fromJS(data, mapping);
//use this as our model bindings
ko.applyBindings(viewModel);
如何解釋如何,與一個空函數創建演示有關訪問根什麼級別並添加到它。 – 2013-06-10 20:23:48
已更新該函數以顯示在返回結果之前如何映射和處理結果。 – 2014-05-08 20:31:48
我知道這是一個非常古老的問題,但剛剛遇到它我想提出一個建議。映射時使用create回調的代碼示例(在KnockoutJs站點上)不能解釋create方法在映射對象上。瑞恩,如果可以的話,我會要求網站的所有者用上面的代碼替換他們的代碼示例。 – 2017-01-05 14:22:44