Backbone.js 如何正确使用主干中的事件
我正在构建一个三向选择器:公司、部门和用户 我正试图找出在我的主干应用程序中构建此功能的最佳方法。这是我目前面临的问题 假设用户选择了一家公司。然后,将填充部门和用户集合,并更新视图: 然后,用户可以从列表中选择一个部门,这将进一步优化用户选择。这是我的工作很好 或者,用户可以直接转到用户列表并查找用户(无需首先指定部门)。在这种情况下,部门和用户的视图都需要更新:Backbone.js 如何正确使用主干中的事件,backbone.js,Backbone.js,我正在构建一个三向选择器:公司、部门和用户 我正试图找出在我的主干应用程序中构建此功能的最佳方法。这是我目前面临的问题 假设用户选择了一家公司。然后,将填充部门和用户集合,并更新视图: 然后,用户可以从列表中选择一个部门,这将进一步优化用户选择。这是我的工作很好 或者,用户可以直接转到用户列表并查找用户(无需首先指定部门)。在这种情况下,部门和用户的视图都需要更新: 应在用户的部门中选择部门 用户应该细化到所选用户部门中的所有用户,而不是所选公司中的所有用户 我正在努力寻找最好的方法。到目前
部门
和用户
集合有一个selected
属性,所以我就是这样维护状态的。目前我正在做一些类似的事情
- 当用户选择一个部门时,部门视图
- 直接在
集合上设置所选部门部门
- 触发事件
- users集合将听到该事件,清除所有选定的用户,并触发另一个事件
- 用户视图将听到事件并重新渲染。因为它知道departments集合,所以它知道已经选择了一个部门,并且应该将用户细化到该部门
- 当用户选择用户(不指定部门)时,用户视图
- 直接在
集合上设置所选用户users
- 直接在
集合(它知道)上设置所选部门部门
- 触发事件
- 什么是最好的结构
- 我是否正确使用事件
- 如何处理需要了解其他视图和其他集合变化的视图
更新3:有一个单独的模型来存储状态+的使用是惊人的。认真地我觉得使用模型跟踪状态很有用。这样,您就可以将该模型传递给不同的视图,而不必让视图直接相互引用 可以在状态模型上使用内置和自定义事件来管理状态转换 在您的情况下,集合不需要存储选定的
。相反,selectedUser
和selectedDepartment
可以是状态模型的属性。
然后,您可以在模型中拥有触发自定义事件的逻辑(“更新:用户:视图”或“更新:部门:视图”),具体取决于所选内容
我希望这是有道理的。我喜欢这个-我会试一试,然后再给你回复!您是否使用事件从视图->状态和状态->集合和返回进行通信?或者你给状态引用所有东西,直接调用函数?或者某种组合?看起来视图应该直接引用状态,以便在渲染时可以使用其属性。同意吗?是的,听起来不错。一般来说,我还没有一个适用于所有情况的标准实践。但是使用模型很好,因为您希望存储一些信息(状态),然后内置事件和模型方法有助于使视图“更精简”