2013-03-23 53 views
2

我本來像這樣的視圖模型:Knockout Mapping插件 - 如何將屬性添加到默認映射?

var ObjectViewModel = function (data) { 
    var self = this; 
    //debugger; 
    self.id = data.id; 
    self.details = data.details; 
    self.children = ko.observableArray(data.children); 

    self.deleteChild = function (child) { 
     // Pending UI 
     // call API here 
     // On success, complete 
     self.children.remove(child); 
    }.bind(self); 

}; 

現在我試圖使用映射插件,這樣我就可以讓孩子們數組元素觀測。我已經這樣做了:

var ObjectViewModel = ko.mapping.fromJS(data); 

但我不知道如何將deleteChild方法添加到此。

回答

2

我已經以不同的方式完成了這一工作,似乎也起作用。

function ObjectViewModel(viewModel) { 
    var self = this; 

    // bind the vm to self 
    ko.utils.extend(self, viewModel); 

    self.deleteChild = function (child) { 
     // Pending UI 
     // call API here 
     // On success, complete 
     self.children.remove(child); 
    }.bind(self); 
}; 

var model = new ObjectViewModel(ko.mapping.fromJS(data)); 
+0

聰明。我喜歡這個答案。 – hawkke 2014-09-15 14:49:16

相關問題