2013-11-23 78 views
0
後發現視圖模型性能

所以,我有一個Ajax調用,並在這種情況下,我能結合健康正確淘汰賽無法ko.mapping.fromJS

var viewModel = function() {    
    var self = this; 
    self.Health = ko.observable(); 

    self.Load = function(data) {  
     self.Health(data.Health);  
    }; 

    self.LoadFromServer = function() { 
    $.getJSON("@Url.Action("Details", "Person", new {id = Model.ID})", null, function (jsonData) { 
     self.Load(jsonData); 
     }); 
    }; 

但要自己從手動創建每個保存在我的數據屬性,我試圖使用ko.mapping.fromJS像這樣

var viewModel = function() {    
    var self = this; 

    self.Load = function(data) {  
     ko.mapping.fromJS(data, {}, self)  
    }; 

    self.LoadFromServer = function() { 
    $.getJSON("@Url.Action("Details", "Person", new {id = Model.ID})", null, function (jsonData) { 
     self.Load(jsonData); 
     }); 
    }; 

才發現我結合

<span data-bind="text: Health"></span> 
健康沒有定義「JavaScript錯誤

任何幫助將不勝感激。

鏈接的jsfiddle這個破碎的情況下 http://jsfiddle.net/rpuri/LskVR/

太感謝。

+0

你在哪裏調用ko.applyBindings/ –

+0

$(documet).ready()是我實例化視圖模型和applyBindings的地方。 – puri

+0

在'Load'函數中映射命令後,添加'console.log(self);'以便您可以看到自我對象的實際結構。如果答案不明顯,請在您的帖子中包含您的發現。 –

回答

0

我能特性使用jQuery.extend

.done(function (raw) { 
     $.extend(self, ko.mapping.fromJS(raw)); 
     ko.applyBindings(self); 
}); 

還需要調用ko.applyBindings(個體經營).done()內事件阿賈克斯成功事件動態添加到我的視圖模型,異步調用完成後。

我現在面臨的問題是每次加載新數據時都必須調用ko.applyBindings(self)和$ .extend。

這是一個工作示例。第22行是23性能問題。

http://jsfiddle.net/rpuri/ANgJb/

有沒有辦法結合,並延伸到避免每次打電話前檢查?

謝謝。