2012-03-13 6 views
0

knockoutjsを使用してASP.NET MVC Webサイトを開発しています。画面の1つについては、2つの部分にそれぞれ2つの部分ビュー(Partials AとBと言う)が必要です。各パーシャルは、そのパーシャルが存在するdivに制約された独自のモデルを持っています。モデルは、ノックアウトによってデータおよびページの機能性に使用されます。ASP.NET MVC 3とknockout.jsベースのシステムで、ある部分から行を選択して別の部分に行を追加する必要があります

部分Aにはチェックボックス付きの一連の行を返す検索機能があります。ユーザーはこれらのチェックボックスをチェックし、ボタンをクリックすることができます。これらのボタンをクリックすると、チェックされたすべての行のIDフィールドを、これらのIDのデータを取得して部分Bにデータ行を追加するメソッドに渡す必要があります。

すでに部分B Partial Bのモデルで定義されているjavascriptメソッドから作成されたajax呼び出しを使用して呼び出します。ajax呼び出しは、コントローラメソッドからデータを順番に取得します。しかし、Partial Bのモデルにアクセスできない部分AからJavaScriptメソッドを呼び出す方法と、選択したデータをjavascriptメソッドに渡す方法がわかりません。

どうすればこの問題を解決できますか?

+0

Jsfiddleであなたが持っているもののモックアップを表示できますか?パーシャルAが意味することがパーシャルBモデルにアクセスできないとわかりません。 – madcapnmckay

答えて

0

私はあなたの言うことを聞いたら、2つのモデルを持つ1つのビューモデルを持つことでこれを行うことができます。これはかなり一般的です。だからこのようなもの:

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

しかし、あなたはお互いについて知りません。だから、別のオプションは、このようなマスターのviewmodelを持つことが考えられます。

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

}; 

これは、VMの分離2つのパーシャルを維持することができますが、それらを一緒に入れているときに、彼らはお互いに話をすることができます。

関連する問題