javascript - 如何使用 "qualifier"触发Backbone事件

标签 javascript backbone.js

我想在渲染 View 时触发渲染事件。

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 上注册事件,但我必须使用全名。 IE。这有效:

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"); });

我预计最后一个相当于注册渲染器的所有事件。

有没有办法让监听 render 等同于监听 render:beforerender:after

最佳答案

使用冒号命名事件名称为 just a convention :

If you have a large number of different events on a page, the convention is to use colons to namespace them: "poll:start", or "change:selection".

source code of Events.trigger显示要调用的事件处理程序是通过事件的全名搜索的,无论它是否包含冒号:

var events = this._events[name];
...
if (events) triggerEvents(events, args);

您可以:

  • 定义并触发'all'事件,
  • 通过使用空格分隔的事件名称列表调用 trigger 来触发多个事件处理程序,或者
  • 修改backbone.js中Events.trigger的源代码以添加此功能。

关于javascript - 如何使用 "qualifier"触发Backbone事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22803264/

相关文章:

javascript - 选择另一个选项时如何在选择中显示/隐藏选项

javascript - Backbone 验证将输入添加到验证

javascript - Reactjs react 谷歌地图未定义

javascript - 为什么 switch case 中的逻辑 OR 运算符会表现得很奇怪?

javascript - 函数 _.bind() 不会绑定(bind)对象

javascript - Backbone JS : where to declare the function inside a view?

backbone.js - 启动/停止 Marionette 模块和路由

jquery - backbonejs - 具有不同属性的相同模型

javascript - 如何防止日期时间验证中的 future 年份?

javascript - 我的 D3.js 代码导致将新数据添加为新图形,我希望将其附加到现有图形。我做错了什么?