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 如何正确使用主干中的事件_Backbone.js - Fatal编程技术网

Backbone.js 如何正确使用主干中的事件

Backbone.js 如何正确使用主干中的事件,backbone.js,Backbone.js,我正在构建一个三向选择器:公司、部门和用户 我正试图找出在我的主干应用程序中构建此功能的最佳方法。这是我目前面临的问题 假设用户选择了一家公司。然后,将填充部门和用户集合,并更新视图: 然后,用户可以从列表中选择一个部门,这将进一步优化用户选择。这是我的工作很好 或者,用户可以直接转到用户列表并查找用户(无需首先指定部门)。在这种情况下,部门和用户的视图都需要更新: 应在用户的部门中选择部门 用户应该细化到所选用户部门中的所有用户,而不是所选公司中的所有用户 我正在努力寻找最好的方法。到目前

我正在构建一个三向选择器:公司、部门和用户

我正试图找出在我的主干应用程序中构建此功能的最佳方法。这是我目前面临的问题

假设用户选择了一家公司。然后,将填充部门和用户集合,并更新视图:

然后,用户可以从列表中选择一个部门,这将进一步优化用户选择。这是我的工作很好

或者,用户可以直接转到用户列表并查找用户(无需首先指定部门)。在这种情况下,部门和用户的视图都需要更新:

  • 应在用户的部门中选择部门
  • 用户应该细化到所选用户部门中的所有用户,而不是所选公司中的所有用户
  • 我正在努力寻找最好的方法。到目前为止,我的
    部门
    用户
    集合有一个
    selected
    属性,所以我就是这样维护状态的。目前我正在做一些类似的事情

    • 当用户选择一个部门时,部门视图
    • 直接在
      部门
      集合上设置所选部门
    • 触发事件
    • users集合将听到该事件,清除所有选定的用户,并触发另一个事件
    • 用户视图将听到事件并重新渲染。因为它知道departments集合,所以它知道已经选择了一个部门,并且应该将用户细化到该部门
    我这样做是因为如果我的视图只触发事件(而不首先设置departments selected属性),我将有一个竞争条件:departments和users集合都将响应事件,并且根据时间的不同,用户可能无法正确优化

    第二件:

    • 当用户选择用户(不指定部门)时,用户视图
    • 直接在
      users
      集合上设置所选用户
    • 直接在
      部门
      集合(它知道)上设置所选部门
    • 触发事件
    这就是我被困的地方。departments集合实际上不需要做任何事情,因为它选择的属性已经正确;实际上,它的视图只需要重新渲染。用户的观点也是如此

    但这还不是全部,因为还有很多其他事情可能发生。我觉得事情已经失控了

    • 什么是最好的结构
    • 我是否正确使用事件
    • 如何处理需要了解其他视图和其他集合变化的视图
    更新:我是否应该使用路由来保存应用程序状态?这可以简化事情

    更新2:对我很有帮助。拥有一个单独的模型来管理状态显然是一条可行之路


    更新3:有一个单独的模型来存储状态+的使用是惊人的。认真地我觉得使用模型跟踪状态很有用。这样,您就可以将该模型传递给不同的视图,而不必让视图直接相互引用

    可以在状态模型上使用内置和自定义事件来管理状态转换

    在您的情况下,集合不需要存储选定的
    。相反,
    selectedUser
    selectedDepartment
    可以是状态模型的属性。 然后,您可以在模型中拥有触发自定义事件的逻辑(“更新:用户:视图”或“更新:部门:视图”),具体取决于所选内容


    我希望这是有道理的。

    我喜欢这个-我会试一试,然后再给你回复!您是否使用事件从视图->状态和状态->集合和返回进行通信?或者你给状态引用所有东西,直接调用函数?或者某种组合?看起来视图应该直接引用状态,以便在渲染时可以使用其属性。同意吗?是的,听起来不错。一般来说,我还没有一个适用于所有情况的标准实践。但是使用模型很好,因为您希望存储一些信息(状态),然后内置事件和模型方法有助于使视图“更精简”