gpt4 book ai didi

backbone.js - 如何在 Backbone 中正确使用事件

转载 作者:行者123 更新时间:2023-12-04 02:49:14 24 4
gpt4 key购买 nike

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

enter image description here

我试图找出在我的 Backbone 应用程序中构建它的最佳方法。这是我目前遇到的问题。

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

enter image description here

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

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

  • 该部门应该在用户的部门上被选中。
  • 用户应该细化到所选用户所在部门的所有用户,而不是所选公司的所有用户。

  • 我正在努力寻找最好的方法来做到这一点。到目前为止,我的 departmentsusers收藏有 selected属性(property),所以这就是我维护状态的方式。目前我正在做类似的事情
  • 当用户选择一个部门时,部门 View
  • 直接在departments上设置所选部门收藏
  • 触发事件
  • users 集合听到事件,清除任何选定的用户,并触发另一个事件
  • 用户 View 会听到事件并重新渲染。由于它知道部门集合,它知道已经选择了一个部门并且应该将用户细化到部门

  • 我这样做是因为如果我让 View 只触发事件(不先设置部门选择属性),我就会有一个竞争条件:部门和用户集合都会响应事件,并且取决于用户的时间可能没有得到适当的提炼。

    第二件:
  • 当用户选择一个用户(不指定部门)时,用户 View
  • 直接在 users 上设置所选用户收藏
  • 直接在departments上设置所选部门集合(它知道)
  • 触发事件

  • 这就是我被困的地方。部门集合实际上不需要做任何事情,因为它选择的属性已经正确;真的,它的 View 只需要重新渲染。用户的观点也是如此。

    但这还不是全部,因为还有很多其他事情可能会发生。感觉快要失控了
  • 什么是最好的结构?
  • 我是否正确使用事件?
  • 您如何处理需要听到其他 View 和其他集合更改的 View ?

  • 更新:我应该只使用路由来保存应用程序状态吗?这可能会简化事情......

    更新 2: This question对我很有帮助。拥有一个单独的模型来管理状态肯定是要走的路。

    更新 3:有一个单独的模型来存储状态 + 使用 jQuery deferreds是惊人的。严重地。它完成了我。

    最佳答案

    我发现使用模型来跟踪状态很有用。这样你就可以将该模型传递给不同的 View ,并且没有直接相互引用的 View 。

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

    在您的情况下,集合不需要存储 selected .而是 selectedUserselectedDepartment可能是状态模型的属性。
    然后你可以在你的模型中有逻辑来触发自定义事件('update:users:view' 或 'update:departments:view'),具体取决于选择的内容。

    我希望这是有道理的。

    关于backbone.js - 如何在 Backbone 中正确使用事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16696023/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com