Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 更改我的主干.js路由器_Backbone.js - Fatal编程技术网

Backbone.js 更改我的主干.js路由器

Backbone.js 更改我的主干.js路由器,backbone.js,Backbone.js,我有一个带有require.js、backbone.js和jquery的web应用程序。 应用程序的简要结构如下: 屏幕上有两个部分(工具栏和下面的主要内容) 有多个组件(地址管理、事件管理),每个组件都由哈希片段更改触发,并且需要 页面转换 有一个主干.js路由器。它是应用程序的核心。路由器被一个新的散列片段激活(手动输入, 后退按钮,菜单项选择) 到目前为止,在路由器中,我进行了页面转换,我直接调用所选组件的控制器(“主干中的视图”) 因此,有一个中央处理控制器调用 但现在必须改为分布式

我有一个带有require.js、backbone.js和jquery的web应用程序。
应用程序的简要结构如下:

  • 屏幕上有两个部分(工具栏和下面的主要内容)

  • 有多个组件(地址管理、事件管理),每个组件都由哈希片段更改触发,并且需要 页面转换

  • 有一个主干.js路由器。它是应用程序的核心。路由器被一个新的散列片段激活(手动输入, 后退按钮,菜单项选择)
到目前为止,在路由器中,我进行了页面转换,我直接调用所选组件的控制器(“主干中的视图”)

因此,有一个中央处理控制器调用

但现在必须改为分布式处理。我现在需要从两个不同的位置响应一个新的哈希片段:工具栏组件和路由器 因此,我的想法是用pub-sub交换直接控制器调用机制。现在,多个组件可以注册一个特殊操作,路由器只是“触发事件”

我四处搜索,找到了Chaplin(),一个backbone.js示例应用程序

卓别林的开发者似乎有一个类似的东西叫做“ApplicationView”():

“在路由器和控制器之间,有ApplicationView作为 调度员。”


有没有人已经有了这种架构,可以告诉我他在这方面的经验,或者有没有人用另一种方式解决了这一问题?

我在这方面使用了类似的架构,尽管可能不太复杂。我在这方面做了很好的解释。快速概述:

  • 我使用与卓别林的发布/订阅体系结构类似的单例
    state
    模型来管理更改应用程序状态的应用程序范围内的事件。这只是一个基本的主干模型,添加了一些方法来将属性序列化和反序列化为字符串,以便可以在URL中设置属性

  • 通过在
    app.state
    上设置属性来更改应用程序状态以响应用户交互或其他输入的应用程序组件

  • 当应用程序状态更改时需要更新的组件通过绑定到
    app.state
    上的
    change
    事件来进行更新(看起来这正是卓别林的
    mediator
    的工作方式,尽管它们重命名了方法以适应发布/订阅范式)

  • 我把我的路由器当作专门的视图,更新地址栏并响应用户在该区域的输入。更改地址(手动或通过单击链接)会导致路由器
    set()
    app.state
    模型进行必要的更改,其他所有内容都会相应更新

我希望这会有所帮助——我认为这比卓别林的方法简单一点