簡體   English   中英

如何通過“限定詞”觸發骨干事件

[英]How to trigger Backbone event with “qualifier”

我想在渲染視圖時觸發一個渲染事件。

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:beforerender:after

使用冒號命名事件名稱只是一個約定

如果頁面上有大量不同的事件,則慣例是使用冒號為它們命名空間:“ poll:start”或“ change:selection”。

Events.trigger源代碼顯示,將通過事件的全名搜索要調用的事件處理程序,而與它是否包含冒號無關:

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

您可以:

  • 定義並觸發'all'事件,
  • 通過使用帶空格分隔的事件名稱列表調用trigger觸發多個事件處理程序,或者
  • 修改Events.triggerEvents.trigger的源代碼以添加此功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM