2012-04-17 31 views
1

我正在嘗試自定義KoGrid的篩選器,以便可以基於「從 - 到」邏輯過濾日期數據的列(KoGrid帶有篩選器的示例可以發現here)。我想要的是顯示一個對話框,當點擊相應的過濾器字段時,包含帶有日期選擇器的「輸入」和「輸入」。處理程序未分配到KoGrid的篩選器字段(Knockout + jQuery)

var vm = { 
      filterInfo: ko.observable(), 
      myObsArray: arr 
     }; 
     ko.applyBindings(vm); 
... 
$("div.kgheadercell.col5").on("click", "input", function (event) {    
    $("#popup").dialog("open"); 
}); 

這似乎不能正常工作,即一旦我點擊文本字段,對話框就不會顯示。但是,如果我嘗試在Chrome控制檯中輸入代碼的最後一位,則該處理程序將被正確綁定,並且一旦單擊該文本字段,對話框就會出現。

但是,如果我嘗試

$("body").on("click", "input", function (event) {    
$("#popup").dialog("open"); 
}); 

這個成功增加了處理器因爲我能看到,當我點擊任何(明顯)的文本字段的對話框。

這段代碼發生了什麼事情,以便它刪除或更改處理程序?

回答

1

KoGrid在內部使用模板來管理網格佈局。這可能是兩種:

  • 電網還沒有完成由您試圖附加的實時渲染「點擊」處理標題字段
  • 的頭模板,有效地重新呈現刪除您點擊處理程序

您擁有的選項是使用自定義標題模板。這在KoGrid中沒有記錄,但功能在那裏。您可以使用點擊用作過濾箱<input>元素結合,並手動設置其值爲:

http://jsfiddle.net/ericbarnard/hCQ7r/1/

看我如何連接起來的視圖模型的doSomething功能,通過點擊調用過濾器<input>(打開過濾器行後)

+0

是的,這似乎是這種情況。事實上,我可以通過在標題單元格模板中添加attr:{id:\'filterInput \'+ $ data.colIndex}來解決這個問題,然後在$(「body」)。on('click', '#filterInput5',function(){$(「#popup」)。dialog(「open」);});'in'$(document).ready' – Azimuth 2012-04-18 08:04:16

相關問題