如何监听 javascript 对象上的自定义事件?我试图在触发事件后触发应用程序级对象的方法,但与 DOM
元素不同,我无法为该对象注册监听器。
如何构造我的应用程序以监听触发的事件,然后执行操作?
js:
$(document).ready(function(){
var app = {};
app.doStuff = function(){ alert("Yo!");};
$(app).on("myCustomEvent", function(){
alert("doing stuff");
app.doStuff();
});
$("body").on('click', "#trigger", function(){
alert("triggered");
$(this).trigger("myCustomEvent");
});
});
在 jsbin 中报告: http://jsbin.com/zopubuso/1/edit
这背后的原因:
我正在创建一个主干应用程序,其中我的 app
对象中有一个全局事件导出。我正在尝试通过触发事件在 View 之间进行交流:
即。
app.on("myEvent", MyView.model.doStuff);
app.trigger("myEvent");
但我无法触发事件。
最佳答案
尝试:
用 jquery 触发:
$(app).trigger("myCustomEvent");
作为 Backbone 事件触发:
首先,您需要使用 Backbone.Events
扩展对象:
var app = {};
_.extend(app, Backbone.Events); // underscore.js '_.extend', We can also use jquery '$.extend()'
... on("myCustomEvent")...
app.trigger("myCustomEvent");
演示:http://jsfiddle.net/A5484/1/
从 agconti 更新。
这是在主干中完成附加事件的简单方法:
var app = _.extend({}, Backbone.Events);
var myView = Backbone.View.extend({
initialize: function(){
... other configuration stuff ...
app.on( "myCustomEvent", function(){
this.doStuff();
}, myView);
},
doStuff: function(){ alert("Yo!"); }
});
app.trigger('myCustomEvent');
*
使用 backbone 的事件对象然后使用 app.on();
附加监听器更有利,就像我尝试做的那样。
关于javascript - 对象的事件委托(delegate);如何监听事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25145100/