2012-03-13 18 views
0

我正在開發一個帶有knockoutjs的ASP.NET MVC網站。對於其中一個屏幕,我們需要分別在兩個div中使用兩個部分視圖(比方說部分A和B)。每個部分都有自己的模型,限制部分所在的div。該模型用於挖掘數據和頁面上的功能。需要從一個部分中選擇行並將它們追加到ASP.NET MVC 3和基於knockout.js的系統中另一個部分的行中

部分A具有一些搜索功能,可以返回一堆帶有複選框的行。用戶可以檢查這些複選框並單擊按鈕。點擊這些按鈕時,我需要將所有檢查行的ID字段傳遞給一個方法,該方法將爲這些ID獲取數據,然後在部分B中追加數據行。

我已經可以填充部分B使用從部分B模型上定義的javascript方法制作的ajax調用.ajax調用反過來從控制器方法中獲取數據。但是,我不知道如何從部分A(不能訪問部分B的模型)調用javascript方法,以及如何將所選數據傳遞給javascript方法。

我該怎麼辦?

+0

你可以在Jsfiddle中展示你有什麼模型嗎?我不確定部分A的含義是否無法訪問部分B模型。 – madcapnmckay 2012-03-13 22:46:05

回答

0

如果我聽到你說得對,你可以通過一個單獨的視圖模型和2個模型來做到這一點,這很常見。所以像這樣:

var viewmodel = function(){ 
    var 
     self = this, 
     self.modelA = { ... }, 
     self.modelB = { ... }, 
     self.fetchRowsForB = function() { ... }, 
     self.fetchCheckedRowsFromA = function(){ ... } 
}; 

但是,你說的部分不知道彼此。因此,另一種選擇可能是有一個主視圖模型是這樣的:

var masterVM = function(){ 
    var 
     self = this, 
     vmA = function() { ... }, 
     vmB = function() { ... }, 
     functionThatTalksBetweenTheTwo = function() { ... }  

}; 

這可以讓你保持2個諧音VM的分離,但後來當他們放在一起,他們可以互相交談。

相關問題