2013-05-13 60 views
0

我在我的項目上使用了knockout.js來綁定模型以查看。基本上,在document.ready函數我使用下面的代碼:Knockout.js - 在asp.net上多次綁定viewModel的基礎mvc3局部視圖

var viewModel = { 
     firstName: ko.observable("John") 
     listofChildren=ko.observablearray() 
    }; 
    ko.applyBindings(viewModel); 
    dataService.getChildren(viewModel); // This is no good need to move to partial view 

我可以在大多數頁面上使用上述viewModel。不過,我要求對於一個局部視圖,我們稱Jquery爲第三方Web服務,並填充上面的listOfChildren屬性。

問題是,此時對web服務的調用發生在document.ready上,這意味着每個頁面刷新都會調用Web服務。我只想在用戶加載部分視圖時撥打電話。

我試圖將呼叫轉移到部分視圖頁上的第三方webservice,但它顯示viewModel爲空。

dataService.getChildren(viewModel); //where dataService is a function which uses ajax call to webservice and populates the listofChildren array. 

有人可以幫助我如何達到上述最佳效果嗎?

回答

1

有兩個原因呼叫轉移到getChildren無法將其移動到局部視圖後找到viewModel

  1. viewModel的作用範圍是document.ready功能,而不是外部可見有
  2. viewModel創建

這裏之前getChildren呼叫正在發生什麼,我會建議:離開getChildrendocument.ready內部調用,但只有在局部視圖存在時才執行它,方法是搜索僅存在於局部視圖中的某些內容。如果你找到它,然後加載孩子。

if ($('#SomethingInPartialView').length) { 
    dataService.getChildren(viewModel); 
} 
相關問題