gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:48:31 26 4
gpt4 key购买 nike

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

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

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

假设我有一个包含 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com