2013-05-18 57 views
0

我試圖找到一種方法來更改我的所有元素上的點擊事件。我想要做這樣的事情,但我認爲KO如何綁定其實際附加到元素的click事件,因此更改函數沒有任何影響。淘汰賽改變點擊事件

viewModel.clickEvent = function(item){ 
    logic 
} 

viewModel.clickEvent = newFunction; 

<div data-bind="click: clickeEvent">MyButton</div> 

我認爲我需要使用代表,但很難搞清楚如何做到這一點。任何人都可以發佈一個基本的例子來說明如何用knockout做到這一點?

+2

你的榜樣-except對於一些語法如預期problems-工作。參見[this fiddle](http://jsfiddle.net/jeroenheijmans/jMGwj/)。你想達到什麼目的?你可以編輯你的問題,更具體的,做一個*工作*例子,更清楚地表明你的問題? – Jeroen

+0

對不起,最終目標是有能力公開KO單擊事件,以便我可以在運行時更改邏輯。我的第一個嘗試只是試圖設置viewmodel函數,但這不起作用。我選擇的解決方案是我最終走的路。謝謝你的幫助! – MrB

回答

1

如果我理解正確。您可以創建一個假事件處理程序,您可以修改它,而無需修改綁定到視圖的實際事件處理程序。

var viewModel = { 
    clickEvent : function(item){ 
     if(this.changableClickEvent) 
      this.changableClickEvent(item); 
    }, 
    changableClickEvent : null 
} 

viewModel.changableClickEvent = function(){ 
    // logic 
    alert('logic'); 
} 

ko.applyBindings(viewModel); 

See fiddle

+0

酷感謝你我最終做了這樣的事情,但我覺得這是一個黑客,並不斷閱讀有關代表和類似的東西。這似乎更簡單! – MrB