我想在渲染视图时触发渲染事件。
function Renderer() {
_.extend(this, Backbone.Events);
};
Renderer.prototype.render = function(view, model) {
this.trigger('render:before');
// Do some checks to see how
// we should render the view
// and then call render
this.trigger('render:after');
};
var renderer = new Renderer();
现在我可以在Renderer
上注册活动,但我必须使用全名。即这有效:
renderer.on('render:before', function() { console.log("before rendering"); });
renderer.on('render:after', function() { console.log("after rendering"); });
renderer.on('all', function() { console.log("All events from renderer"); });
但这不是:
renderer.on('render', function() { console.log("Any rendering events"); });
我希望最后一个等同于为渲染器注册all
个事件。
有没有办法让render
听取相当于同时聆听render:before
和render:after
的内容?
答案 0 :(得分:3)
使用冒号命名空间事件名称为just a convention:
如果您在网页上有大量不同的事件,那么 约定是使用冒号命名它们:" poll:start",或 "变化:选择"
source code of Events.trigger
表示要调用的事件处理程序由事件的全名搜索,而不管它是否包含冒号:
var events = this._events[name];
...
if (events) triggerEvents(events, args);
你可以:
'all'
事件,trigger
来触发多个事件处理程序,或Events.trigger
的源代码以添加此功能。