Javascript 如何使用“触发主干事件”;限定词;
我希望在渲染视图时触发渲染事件Javascript 如何使用“触发主干事件”;限定词;,javascript,backbone.js,Javascript,Backbone.js,我希望在渲染视图时触发渲染事件 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 c
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.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"); });
我希望最后一个相当于注册渲染器的所有
事件
有没有一种方法可以使监听呈现
等同于监听呈现:在
之前和呈现:在
之后?使用冒号来命名事件名称:
如果页面上有大量不同的事件,则
约定是使用冒号来命名它们的名称空间:“poll:start”,或者
“改变:选择”
显示将按事件的全名搜索要调用的事件处理程序,与它是否包含冒号无关:
var events = this._events[name];
...
if (events) triggerEvents(events, args);
你可以:
- 定义并触发
'all'
事件
- 通过使用事件名称的空格分隔列表调用
trigger
,触发多个事件处理程序,或
- 修改backbone.js中
Events.trigger
的源代码以添加此功能
这是同一件事吗?@muistoshort这有点像是相反的。在“渲染”上注册时,我不想接收所有事件。这个问题似乎是关于触发所有注册了“限定符”的听众。