簡體   English   中英

在Backbone.js中使用模型過濾/排序集合

[英]Using a Model to Filter/Sort a Collection in Backbone.js

經過數天的閱讀教程和搜索Google,我碰壁了...

我正在使用骨架.js創建一個具有Item Model / Items Collection的應用程序,並帶有各種視圖來顯示Items。 該應用程序的一部分將允許用戶創建組(並使用現有組)以顯示Items Collection的子集。

將有一個帶有各種視圖的組模型/組集合,以顯示組並允許用戶將項目與特定組相關聯。

問題是每個項目可以屬於一個,多個或不屬於任何組,而我無法弄清楚如何使用組模型基於與之相關聯的項目來獲取項目集合的子集,甚至是正確的方法去做。

任何幫助將不勝感激!

根據您實際擁有的模型的數量,將它們存儲在何處以及如何在UI中呈現它們將取決於您如何實現這一點。

如果有很多模型,這些模型存儲在遠程服務器上的數據庫中,並且組項目將分別呈現,那么一種方法是按需加載組項目。 也許像...

var Item = Backbone.Model.extend({});
var ItemColleciton = Backbone.Collection.extend({
  url: '/load-items',
});

var Group = Backbone.Model.extend({
  items: new ItemCollection(),
  initialize: function() {
    // load the groups items as the group is initialized
    this.items.fetch({data:{groupID:this.id}});
  }
});

另外,如果模型較少,則可能希望一次加載所有模型,然后使用過濾來填充組。 像這樣的東西...

var Item = Backbone.Model.extend({});
var ItemColleciton = Backbone.Collection.extend({
  url: '/load-groups',
});

var Group = Backbone.Model.extend({
  initialize: function() {
    // load the groups items as a subset of the already loaded group collection
    this.items = new ItemCollection(allItems.filter(function(item) {
      return item.GroupID = this.id;
    }, this));
  }
});

// in your router init ...
var allItems = new ItemCollection();
allItems.fetch();

以上只是示例方法。 在使用骨干一段時間后,我發現它確實可以解釋,並且可以以完全不同的方式解決不同的問題。

您可能還希望檢查主干關系 我自己沒有使用過它,但相信它增加了對模型和集合之間的映射關系的支持。

暫無
暫無

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

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