我的问题涉及此UI示例。Backbone.js UI中管理UI状态/处理选择的方法
经与方法来管理各种UI视图分量的“选中”状态的麻烦。例如,我有上面的菜单,用户从中进行各种选择。这些选择应该会引起菜单本身的更新(HL选定的项目),并且会导致结果更新,这将根据所作的选择进行更新。另外,菜单有不同的规则。例如,您一次只能选择一个“列表”,但您可以选择多个“标签”。
的一种方法,我在想是要创建包含UI“选择”的状态的主干模型。例如,我可以有一个模型SearchCriteria来保存这些信息。然后,当用户在UI中做出选择时,我可以更新此模型。我可以让各种视图组件监听此模型中的更改(以及主数据模型中的更改)。然后,视图将通过更新哪些项目显示为选中来更新其视觉状态。
一个项目,我用这种方法挣扎是谁应该负责更新项目的选定状态。例如,标签的名单上,我可能有以下几部分定义...
- 标签(模型来表示一个标签)
- TagCollection(集合代表标签的集合)
- TagMenuView (观点代表了可供选择的标签菜单)
- TagMenuItemView(视图,它表示菜单中的单个项目)
我应该......
- 设置在TagMenuItemView用于点击事件侦听器,然后尝试处理1)更新所述SearchCriteria模型,和2)更新菜单,例如视觉状态选择的项目?
- 或者,我应该有更高层次的视图(TagMenuView)监听事件,如用户选择一个标签,并执行那里工作?
- 此外,本示例中的标签菜单允许选择多个项目,但列表菜单一次仅允许选择一个列表。这个“用户界面”规则(或者这是否与搜索有关的业务规则?)会在哪里执行?例如,如果我在每个单独的列表菜单项上监听点击事件,我当然可以更新该项目的视觉状态,但是,我还需要确保更高级菜单视图取消选择其他所选列表。那么,管理视图中待办事项列表菜单(代表整个菜单(ToDoListMenuView)而不是每个单独的菜单项视图)中的“UI”状态会更好吗?
对不起,这么多的问题。我只是很难转向这种发展模式。
谢谢精灵。听到别人怎么看待这些事情,正帮助我处理这件事。我已经创建了一个SearchCriteria模型,并且如您所描述的,我的视图监听更改。我只需更新标准和视图就可以正确更新。我最终将标准的实例存储在最高级别的应用程序视图中,然后在初始化时将其传递给子视图。我选择单独传递它,而不是默认的“模型”,因为我的一些其他视图需要使用纯数据项的模型,比如标签或待办事项列表等。 – Kevin 2011-06-10 22:06:31