取而代之的是基於用戶操作觸發事件,你可以只聽一個對象的變化,然後做出反應?有沒有辦法監視對象的更改?
6
A
回答
7
那麼,根據您使用的域,您可以使用backbone.js - 它有一個「模型」對象,您可以擴展並連接到模型更改後自動由事件觸發的回調 - 是,您在模型上設置了一個字段,它會自動觸發您可以收聽的事件。你必須定義你的模型來擴展它的模型,並調用setter函數,而不是直接設置屬性,但它是非常有用的,我推薦它。
只是爲了清楚起見,事件從更改爲,因此即使您以編程方式或在控制檯中設置屬性值,也會觸發該事件。
0
您可以使用getter和setter ro對屬性更改作出反應。約翰雷西格寫了很棒的article關於他們。
5
我寫過這樣的東西。
https://github.com/jmoyers/mettle
person.on('name.change', function(val){
// 'a new name was committed: Yolanda'
console.log('a new name was committed: ', val)
});
person.name = 'Yolanda';
https://github.com/jmoyers/mettle/blob/master/src/model.coffee
這可能是一個有點多,通過所有的源挖。這裏有一個解釋:
我的項目的關鍵是兩個概念。一種是保持軌道一組屬性併爲每個使用defineGetter和defineSetter創建getter和settes。第二種方法是根據您的setter中的這些屬性更改對EventEmitter進行「子類化」並廣播事件。
音軌顯示了我如何爲一組鍵設置getter/setter。
Model.prototype.track = function(keys) {
_.each(keys, __bind(function(key) {
this.tracked.push(key);
this.__defineGetter__(key, __bind(function() {
return this.get(key);
}, this));
return this.__defineSetter__(key, __bind(function(val) {
return this.set(key, val);
}, this));
}, this));
return this;
};
下面是基於「神奇」二傳手如何播放一個例子:
Model.prototype.set = function(key, val) {
this.attribs[key] = val;
this.emit('change', this.attribs);
type = key + '.change';
this.emit(type, val);
};
這是一個簡單的例子,因爲我介紹「屬性中間件」混進去,但是這顯示瞭如何您可以基於屬性更改發出更改事件。
相關問題
- 1. 有沒有辦法監視Django模型的更改?
- 2. 有沒有辦法監聽flash.display.DisplayObjectContainer numChildren屬性中的更改?
- 3. 有沒有辦法監聽未保存的文件更改?
- 4. 有沒有辦法監視目錄中某些文件的更改?
- 5. jquery「對象沒有辦法」
- 6. 監視對數組對象的更改
- 7. 有沒有辦法傾聽Animatable.isRunning更改?
- 8. 有沒有辦法安排html更改?
- 9. 有沒有辦法讓更改相關視圖行中的CouchDB
- 10. 有沒有辦法醃製FTP對象?
- 11. 有沒有辦法寫每個對象
- 12. 有沒有辦法讓一個對象
- 13. 有沒有辦法擴展ThreeJS對象?
- 14. 有沒有辦法改變TimeSpan對象的值?
- 15. 有沒有辦法捕捉對textarea的更改?
- 16. 有沒有辦法跟蹤對github中文件夾的更改?
- 17. 有沒有辦法使用React State來更改視圖?
- 18. 有沒有辦法只使用Hibernate從對象中獲取已更改的列?
- 19. 有沒有辦法檢測對象的屬性何時被更改?
- 20. 有沒有辦法在python中修改datetime對象?
- 21. 有沒有辦法將視圖模型對象自動映射到JavaScript對象?
- 22. jQuery.remove() - 刪除對象後,有沒有辦法讓對象返回?
- 23. 有沒有辦法判斷對象是類還是對象?
- 24. 有沒有辦法清除我所有的TFS掛起更改?
- 25. 有沒有辦法跟蹤HTML元素的所有更改?
- 26. 有沒有辦法避免Java的awkard對象轉換語法?
- 27. 有沒有辦法在Groovy中擁有可調用的對象?
- 28. PHP:有沒有辦法打印所有已創建的對象?
- 29. 有沒有辦法讓一個窗口的所有BindingExpression對象?
- 30. 有沒有辦法訪問給定對象的所有引用?
http://stackoverflow.com/questions/1029241/javascript-object-watch-for-all-browsers – 2011-06-02 15:20:15