簡體   English   中英

Backbone.js:如何確定事件后父視圖的模型?

[英]Backbone.js: How do I identify the model of the parent view upon an event?

我實例化了兩個集合:項目和部分。

每個部分可以具有多個項目,並且每個項目可以出現在多個部分中。

當我將一個項目添加到節中時,我想獲取該項目的哈希並將其保存到該節的數組屬性中。 此數組屬性用於確定在每個部分中顯示哪些項目。

因此,假設我有一個包含100個項目的ItemListModel,並且我的一個節帶有數組[item3_id_hash,item27_id_hash,item59_id_hash]的'items'屬性。 當顯示SectionView時,我首先將這些哈希ID映射到Items集合以獲取那些對象,然后創建一個只顯示那些對象的ItemsView。

我的問題是在創建和刪除這些項時確定這些項,以便我可以獲取它們的ID並從section.item屬性數組中添加/刪除它們。

我可以想到一種通過設置稱為父對象的全局變量在添加后識別項目的解決方案。 我想避免使用全局變量。

完全刪除是另一回事。 當用戶單擊X刪除視圖中的項目時,我不知道如何識別父節的模型,或者至少識別其ID。

示例視圖:

  • Section_1
    • Item_1
    • Item_2
    • Item_3
  • Section_2
    • Item_4
    • Item_5
    • Item_6

如果用戶從視圖中刪除Item_2,如何獲取Section_1.model.get('id'),這樣我就可以獲取section_1對象,然后從Section_1中的'items'數組屬性中刪除Item_2的'id'

我能想到的唯一解決方案是,當我為Section_1繪制ItemsView時,將Section_1的'id'傳遞給HTML視圖。 這是易碎的和脆弱的,所以我試圖避免這種情況。

僅供參考:SectionListView實例化一個或多個SectionsViews,每個實例化一個ItemListView,實例化一個或多個ItemViews

您應該始終返回模型。 如果要刪除項目,請從模型列表中刪除它,並讓其他視圖監聽刪除事件。

因此,您的部分將觀察List remove事件並采取相應的措施(刪除頁面上的元素或完全自行重新呈現)。

在大多數情況下,應首選模型和事件(或者路由)來代替代碼。

希望我能理解您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM