【问题标题】:Backbone: events from external mediator sourceBackbone:来自外部中介源的事件
【发布时间】:2013-11-27 12:23:26
【问题描述】:

我开始在网络应用中实现 Backbone。

该应用程序已经拥有一些自己的对象,并且还有一个用于跨对象事件通信的 Mediator(这里称为 EventTools)。所以对于前。对象订阅如下:

  EventTools.add({

    "gt_pos_ready":function(coords){
      //code;
    }.bind(this),

  });

然后其他一些对象触发事件:

EventTools.fire("gt_pos_ready", args..);

很好。但是如果我想要一个视图或其他 Backbone 对象来监听 EventTools 触发的一些事件呢?

【问题讨论】:

    标签: javascript events backbone.js mediator custom-events


    【解决方案1】:

    您可以使用 Backbone.Events 代替您自己的方式来触发和监听事件:

    _.extend(EventTools, Backbone.Events);
    
    EventTools.on("gt_pos_ready", function(coords) {
      /*Code for gt_pos_ready()*/
    });
    
    EventTools.trigger("gt_pos_ready", {LNG:"40.542343",LAT:"32.232423"});
    

    我确定您使用的是 lodash/underscore,因为它是一个 Backbone dep,所以这应该可以工作。

    【讨论】:

    • 这很有趣。所以我不会使用 EventTools 的原始实现(这是我使用 $.Callbacks 功能制作的一个类)。 link 那么,在这种情况下,EventTools 的本质应该是什么?
    • 最后,我意识到(如您所写)Backbone 本身可以充当调解器。我可以简单地单独使用 Backbone。仅出于组织目的,我仅扩展了一个空对象并保存到 EventTools var EventTools = _.extend({},Backbone.Events); 对于任何对使用 $.Callbacks 的简单中介类感兴趣的人,我之前评论中的链接很好。谢谢@fcortes
    猜你喜欢
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    相关资源
    最近更新 更多