2013-09-26 48 views
1

我在表格中有一個複選框列。我只想在用戶點擊複選框時觸發事件。但是,就我而言,甚至在綁定表格行時也會觸發even。在綁定表格行時觸發Checbox單擊事件

事件的視圖模型

self.UpdateData = function (item, value) {    
       $.ajax({      
       }) 
      }); 

這是怎麼了結合它。

data-bind="checked: flag, click: $root.UpdateData($parent.RowNumber(), flag())" 

任何人都可以讓我知道爲什麼UpdateData()事件越來越呈現時錶行觸發?

回答

2

首先,Knockout不允許您提供click綁定的表達式。如果您對這種方式感興趣,請查看我的Knockout.Punches插件。如果不是,則必須換你表達的匿名函數:

click: function() { $root.UpdateData($parent.RowNumber(), flag()); } 

其次,你這樣做之後發現另一個問題。您的click處理程序將阻止更改複選框,因爲默認情況下,Knockout會在綁定時阻止事件的默認行爲。要啓用默認行爲,您需要添加return true的功能:

click: function() { $root.UpdateData($parent.RowNumber(), flag()); return true; } 

第三,我建議你儘量避免添加click一個複選框結合。您已有綁定checked,它將使用複選框的狀態更新可觀察項。您還可以選擇將checked綁定到陣列,在這種情況下,它會添加或刪除陣列中複選框的值:

data-bind="attr: {value: $parent.RowNumber()}, checked: $root.selectedRows" 
相關問題