這似乎可以作爲http://www.knockoutjs.com的傢伙似乎這樣做。我還沒有能夠使他們的代碼庫有足夠的感覺來獲得類似的模式。如何將事件聽者附加到一個對象JS
切實我有一個基於jQuery的選項卡上的UI一個MVVM風格的應用程序。每個選項卡都由一個視圖模型表示,我希望能夠根據模型中的更改驗證並觸發事件。
我創建一個類似的頁面加載以下我的數據的表示:
$(document).ready(function(){
thisTab = new ThisTab();
});
function ThisTab(){
Load: {Load from my model}
Save: {Save/Persist model to the db (via web service call)}
Validate: {
this.Item1 = function(){Validate item 1, do work, refresh fields, whatever.}
}
}
模型本身是一個複雜的全球性目標,並轉移到DOM(輸入等)即時更新的對象。對其中一些屬性的更改應調用其關聯的驗證項目thisTab.Validate.Item1
。我沒有提出修改事件的問題。如果我將該事件監聽器綁定到一個隨機DOM元素,我可以調用我的例程而不會出現問題,並且一切都很好。但是,將事件附加到非相關的DOM對象看起來很奇怪。
所以問題是:我該怎麼做類似thisTab.addEventListner("someEvent")
或$(thisTab).bind("someEvent")
,其中thisTab不是DOM元素,而是本地對象。試圖做到這一點,我總是會得到一個錯誤,「這種方法不被支持」。
由於該事件在DOM中不確實的泡沫就只能捕捉觸發本身的事件。我需要它來監聽另一個對象(或潛在的DOM)的變化。今天的某個時候,我會試着準備一個小提琴。 – iivel 2011-03-17 13:35:36