请耐心等待,因为我来自传统的 Web 开发背景,使用 ASP.Net,甚至服务器端 MVC。我正在尝试使用 Backbone.js 构建一个高度交互的单页应用程序,以帮助组织我的 javascript 代码并构建 UI。
我在构建 UI 组件的某些概念或方法以及决定如何处理某些方面时遇到困难。我将使用这个过于简化的屏幕截图作为我的问题和讨论的基础。
让我们使用“TO-DO”应用程序作为示例(当然)。UI 非常简单。我有以下“组件”......
- 结果列表显示符合当前所选条件的当前待办事项集
- 我的待办事项列表(个人、工作、博客项目)
- 截止日期过滤器列表(今天、明天、本周、下周)
- 标签列表(Bug、功能、想法、后续)
- 一个搜索框
所需功能
- 每当搜索条件发生变化时更新结果(选择列表、选择到期数据、选择一个或多个标签、输入搜索文本等)
- 用户可以编辑、添加和删除列表。 (这个模型中没有真正显示)
- 用户可以编辑、添加和删除标签。 (这个模型中没有真正显示)
- 用户可以编辑、添加和删除待办事项。 (这个模型中没有真正显示)
数据模型
我发现有几个与“数据”相关的模型。这些很容易识别。
- ToDo(代表单个待办事项)
- ToDoCollection(表示待办事项的集合)
- ToDoList(代表单个待办事项列表)
- ToDoListCollection(表示待办事项列表的集合)
- Tag(代表单个标签)
- TagCollection(代表标签的集合)
如何存储UI状态?
这就是我遇到麻烦的地方。我想显示当前选择了菜单(左侧)中的哪些项目。我当然可以监听事件并在选择项目时向项目添加“选定”类,但我也有规则,例如“一次只能选择一个列表”,但可以选择“任意数量的标签”一次。此外,由于待办事项列表菜单和标签菜单是动态的,因此它们已经与 ToDoListCollection 和 TagCollection 模型关联。它们是根据这些“数据模型”的状态呈现的。
那么,如何使用 Backbone 处理所有这些不同视图的 UI 状态的管理?我很感激任何想法或建议。
Thanks!
我的问题和你的问题一模一样,我会让你知道秘密:作弊。
这里有两个不同的应用程序层,以及它们之间的一些混淆。第一层是系统中待办事项对象之间的关系。您将这些存储在传统的对象关系模型中,并像任何其他 RESTful 应用程序一样创建/检索/更新/删除它们。
第二层是这些对象的显示与对象本身之间的关系。您想要保留一些状态。这里有一个重要的见解:只要对系统进行 GET、PUT 或 POSTED 的每个对象都有唯一的 ID,第二层就可以完全独立于第一层。
第一层是“待办事项管理器”的 RESTful API。第二点是本次演讲的独特之处。它与第一个数据的关系是脆弱的。所以这就是我所做的:我将该表示层状态编码为 JSON 对象,并将其写入用户配置文件中的 8 位干净文本字段。每次用户改变状态时,我都会这样做。
当应用程序加载时,它会从 REST API 加载大量数据和表示层信息,丢弃表示层中任何无意义的内容,然后启动 Backbone.History 并初始化表示。服务器不需要知道any有关客户如何工作的所有详细信息。只要客户说出您的 RESTful 行话,它就可以将“该特定客户关心的各种事情”保存到该文本字段,而不会影响您的对象或其关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)