繁体   English   中英

backbone.js +全局事件调度程序+ require.js:操作方法?

backbone.js + global event dispatcher + require.js: how-to?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有许多骨干模型,按集合进行组织并连接到相应的视图和/或视图集合。 其中一些不属于同一集合的模型需要触发另一个模型(可能不止一个)感兴趣的事件。

我认为,推荐的处理方法是这里和其他地方所描述的“全球事件调度员/聚合器”。

但是,我也碰巧使用require.js,这似乎违背了将调度程序/聚合器附加到应用程序的命名空间对象的想法 - 或者我错在这里?

所以我的问题是:使用require.js我怎样才能有一些不同的骨干模型触发一个将由另一个模型处理的事件?

2 个回复

类似于@Andreas提出但没有Backbone.Marionette的解决方案(尽管如此, 请参阅问题中链接的文章 )。

您所要做的就是定义一个模块,该模块创建一个事件监听器的单例,并在要触发事件或监听此事件的模块中需要此对象。

假设您有定义频道的app / channel.js

define(['backbone', 'underscore'], function (Backbone, _) {
    var channel = _.extend({}, Backbone.Events); 
    return channel;
});

然后,您可以将其用作侦听器

require(['app/channel'], function (channel) {
    channel.on('app.event', function () {
        console.log('app.event');
    });
});

你可以通过这个频道触发一个事件

require(['app/channel'], function (channel) {
    channel.trigger('app.event');
});

我们使用Marionettes app.vent (它是我们应用程序的全局事件发送器),allong with require js,它运行得非常好。

应用

define(, function(){
  return new Backbone.Marionette.Application();
})

型号1

define(['app'], function(app){
  return Backbone.Marionette.Model.extend({
    initialize: function(){
      this.bindTo('app.vent', 'create:model2', this.toSomething, this);
    }
  })
})

MODEL2

define(['app'], function(app){
  return Backbone.Marionette.Model.extend({
    initialize: function(){
      app.vent.trigger('create:model2', this);
    }
  })
})
1 Backbone.js和Require.js

我想用Require.js创建Backbone.js应用。 但是我在控制台中出错 : 未捕获的错误:尚未为上下文:_加载模块名称“ underscore”。 使用require([]) 我该如何解决这个问题? ...

2 Backbone.js和Require.js问题

我正在尝试将现有的Backbone.js项目转换为Require.js。 按照建议,我正在对组件进行模块化。 我的路由器是应用程序的起点,因此我的main.js require文件看起来像这样: 然后我的路由器看起来像这样 但是,当我导航到HomepageView的路线“ ...

3 Backbone.js和Require.js工具r.js

因此,在我的TODO应用程序中,我使用了Backbone和require.js。 一切都很酷。 我将所有模型,视图,集合分离为单个文件,并使用require.js加载它们。 在我尝试使用控制台require.js优化器r.js将所有文件加入一个文件之后。 结果我得到了所有我的库和类的一个 ...

5 使用Require.js设置Symfony2和Backbone.js

我有一个非常简单的应用程序,类似于Todo,带有一个名为Subject的实体。 Symfony2将提供REST api,Backbone应用将负责客户端的操作。 我一直在尝试设置我的项目,以便Require.js加载基本模型和一组非常简单的视图,但是我总是会收到此错误: 其次是 ...

6 Require.js中的Backbone.js模式

在不使用Require.js的情况下,我将我的应用程序像这样: 但是现在我开始使用Backbone.js,我想知道在其中实现上述模式的最佳方法是什么。 更具体地说,为窗口对象分配应用程序是否是“好习惯”? 在上面的示例中,我们基本上是在创建全局引用。 这在Require.js中也很 ...

7 Backbone.js连接视图(require.js)

我是rib.js和require.js的新手。 我已决定使用此样板 。 我想连接两个视图,例如在经典html页面中单击链接。 因此,第一个视图的代码将是: HTML模板: 最后是路由器: 所以我的问题是如何将定义视图NextView的代码放入文件View.js中? ...

8 Require.js如何与Backbone.js一起使用

我是belly.js,underscore.js和require.js的新手。 我一周前曾尝试对此进行研究,我认为underscore.js类似于asp.net中<% %>用法,而我们想在html中显示asp.net的任何值,正确吗? 关于require.js,我不知道在骨​​干 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM