我正在构建一个三向选择器:公司,部门和用户。
我正试图找出在我的Backbone应用程序中构建它的最佳方法。这是我目前遇到的问题。
假设用户选择了一家公司。然后,将填充部门和用户集合,并且视图将更新:
然后,用户可以从列表中选择一个部门,这将进一步细化用户选择。我工作得很好。
或者,用户可以直接进入用户列表并找到用户(无需先指定部门)。在这种情况下,部门和用户的视图需要更新:
我正在努力做到最好的方法。到目前为止,我的departments
和users
个集合都有一个selected
属性,这就是我维护状态的方式。目前我正在做类似
departments
集合我这样做是因为如果我让视图只触发事件(没有首先设置部门选择属性),我就会遇到竞争条件:部门和用户集合都会响应事件,并且取决于用户的计时可能没有得到适当的改进。
第二部分:
users
集合departments
集合(它知道的)这就是我被困住的地方。部门集合实际上不需要做任何事情,因为它的选定属性已经是正确的;实际上,它的视图只需要重新渲染。用户的观点也是如此。
但这不是全部,因为还有很多其他事情可能发生。我觉得它失控了。
更新:我应该只使用路由来保存应用程序状态吗?这可能会简化事情......
更新2: This question对我很有帮助。有一个单独的模型来管理状态肯定是要走的路。
更新3:拥有一个单独的模型来存储状态+使用jQuery deferreds是惊人的。认真。它完成了我。
答案 0 :(得分:2)
我发现使用模型跟踪状态很有用。这样,您可以将该模型传递给不同的视图,并且没有直接引用彼此的视图。
您可以在状态模型上使用内置和自定义事件来管理状态转换。
在您的情况下,集合不需要存储selected
。相反,selectedUser
和selectedDepartment
可以是州模型的属性。
然后,您可以在模型中使用触发自定义事件的逻辑('update:users:view'或'update:departments:view'),具体取决于所选内容。
我希望这是有道理的。