2016-09-07 67 views
0

我打開模型對話框,單擊按鈕。Knockout.js模式對話框 - 將視圖模型元素傳遞給彈出窗口

<input data-bind="click: review" class="button" type="button" value="review" /> 

在按鈕點擊:

$('#divModal').dialog("open"); 

下面是我在我的document.ready調用一個模式對話框的代碼。

$('#divModal').dialog({ 
      autoOpen: false, 
      modal: true, 
      width: 400, 
      height: 700, 
      buttons: { 
       Close: function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 

在我的應用綁定,我有我的觀察數組的所有值。 我在我的表單中綁定這些值。 我想傳遞相同的值到我的模態彈出。

我嘗試下面的代碼,以html:

<div id="divModal"> 
      <section data-bind="visible: myCondition() === 'Readers'"> 
       <div>Readers List Goes here</div> 
      </section> 
      <section data-bind="visible: myCondition() === 'Writers'"> 
       <div>Writers List Goes Here</div> 
      </section> 
      <section data-bind="visible: myCondition() === 'Others'"> 
       <div>Others List goes here</div> 
      </section> 

</div> 

myCondition是可觀察到的陣列。

我可以在html中顯示它的值。 「應用Bindigs」照顧這個。

我是無法在模式對話框中顯示其值。

我有一堆其他元素,我想傳遞給這個模式對話框。

如何在模態對話框打開時調用函數 - 以便我可以將所有值傳遞給此函數?

任何人都可以幫助我嗎?

謝謝!

+2

DOM操作應該在綁定處理程序中完成。有關Bootstrap模式綁定處理程序,請參閱http://stackoverflow.com/a/22707080/392102。 –

+0

我不需要更新/編輯。我只想在彈出窗口中顯示整個頁面的摘要。像預覽。打開彈出窗口應顯示來自同一個html的一些數據。 – user2598808

+0

打開模式是一種DOM操作。 –

回答

0

在淘汰賽中,您的ViewModel不應該瞭解該視圖。 ViewModel純粹是表示應用程序狀態的數據結構,Knockout可確保View與其同步。 「將價值傳遞給我的模式彈出窗口」的概念從根本上被誤導了。你的模態的狀態 - 它顯示的任何數據,以及它的開啓/關閉 - 應該在你的模型中表現出來。打開對話框是一個設置可觀察對象的問題。 A binding handler(它是Knockout的擴展,不屬於ViewModel的一部分)將處理相關的DOM操作。

考慮到這一點,你的問題簡化爲「如何將數據傳遞到模型反映的ViewModel部分?」沒有看到你如何設置你的ViewModel,這是不可能回答的。也許你已經制作了獨立的ViewModel,需要像postbox這樣的通信。也許你的模式是component,你只需要設置其params

+0

Roy J - 感謝您的詳細解釋。我正處於學習階段,這確實有幫助。我在KO.JS中使用了模板並修改了我的視圖模型。 – user2598808