javascript - Backbone.js:如何在事件发生时识别父 View 的模型?

标签 javascript backbone.js backbone-events

我实例化了两个集合:项目和部分。

每个部分可以有多个项目,并且每个项目可以出现在多个部分中。

当我将一个项目添加到一个部分时,我想获取该项目的哈希值并将其保存到该部分的数组属性中。该数组属性用于确定每个部分中显示哪些项目。

假设我有一个包含 100 个项目的 ItemListModel,并且有一个带有“items”属性和数组 [ item3_id_hash、item27_id_hash、item59_id_hash ] 的部分。当我显示SectionView 时,我首先将这些哈希ID 映射到Items 集合以获取这些对象,然后创建一个仅显示这些对象的ItemsView。

我遇到的问题是在创建和删除时识别这些项目,以便我可以获得它们的 id 并从section.item 属性数组中添加/删除它们。

我可以想到一个黑客解决方案,通过设置一个名为“parent”的全局变量来在添加时识别该项目。但是我想避免使用全局变量。

删除完全是另一回事。当用户单击 X 删除 View 中的项目时,我不知道如何识别父部分的模型,或者至少识别其 ID。

示例 View :

  • 第_1节
    • 项目_1
    • 项目_2
    • 项目_3
  • 第_2节
    • 项目_4
    • 项目_5
    • 项目_6

如果用户从 View 中删除 Item_2,我如何获取Section_1.model.get('id'),以便获取section_1对象,然后从 'items' 数组属性中删除 Item_2 的 'id'第_1节

我能想到的唯一解决方案是当我为Section_1绘制ItemsView时将Section_1的“id”传递到HTML View 。这是黑客和脆弱的,所以我试图避免它。

仅供引用:SectionListView 实例化一个或多个SectionsView,每个SectionsView 实例化一个ItemListView,ItemListView 实例化一个或多个ItemView

最佳答案

您应该始终返回到模型。如果您想删除某个项目,请将其从模型列表中删除,并让不同的 View 监听删除事件。

因此,您的部分正在观察 List 删除事件并采取相应的行动(删除页面上的元素或完全重新渲染它自身)。

在大多数情况下,模型和事件(或者路线)应该优先于粘合代码。

我希望我理解你的问题。

关于javascript - Backbone.js:如何在事件发生时识别父 View 的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4321003/

相关文章:

javascript - Vimeo 播放器不在 vimeoPlayer.play() 上播放;在脚本中,但它在控制台中

backbone.js - 如何使用 RequireJS 加载 Backbone 深度模型?

javascript - jQuery On() 不适用于 $(document)

javascript - 如何使用 Jquery/Javascript 从嵌套的 HTML 标签中获取值

javascript - 如何获取城市和机场的完整列表及其相应的代码?

javascript - 重构 Javascript 代码 - 需要重构

javascript - 无法使 jQuery UI 对话框工作

javascript - 在 backbone.js 项目中导入和使用 javascript 库

jquery - 为什么 Backbone 的事件 obj 缺少属性?

jquery - 取消绑定(bind)滚动事件 - 推荐吗?