簡體   English   中英

如何排序骨干模型/視圖?

[英]how to sort backbone models/views?

使用Backbone保持模型中任何視圖井然有序的基本方法是什么? 我有一些主意,但還不完全清楚。

我想通過一個名為“ created_at”的字段使它們保持順序。 我知道可以在集合中提供比較器功能,但是我不確定它如何工作。

我還希望集合中的此順序始終(在列表中)由視圖反映。 我不確定我應該在哪里綁定模型。 我猜我在尋找索引屬性的變化,然后更新以匹配?

非常感謝您的幫助或解釋!

定義集合時,還定義了比較器。 我最近是這樣做的:

        comparators: {
            id: function(animal) {
              return Number(animal.get("id"));
            },

            d_id: function(animal) {
              return -Number(animal.get("id")); // descending
            },

            name: function(animal) {
              return animal.get("name");
            },

            d_name: function(animal) {
              return String.fromCharCode.apply(String, _.map(animal.get("name").split(""), function (c) {
                    return 0xffff - c.charCodeAt();
                    })
              );
            },
        }

這些是我在收集代碼中定義的。

然后,在渲染我的集合視圖時,我只是這樣做了(這在我的視圖中,它在initialize()中渲染了整個集合:

this.collection = new MyCollection();
this.collection.comparator = Collection.comparators[// here I put 'id' or 'd_id' etc. ];
this.collection.sort();

由於此代碼在視圖的初始化中,因此可以在初始化視圖時定義比較器,並向其傳遞比較器的名稱,如下所示:

var directory = new pageView("d_id");

並且比通過initialize(comparator_id)您可以將它傳遞給初始化中的代碼:

this.collection = new MyCollection();
this.collection.comparator = Collection.comparators[comparator_id];
this.collection.sort();

然后,我可以使用該集合來渲染和重新渲染視圖/頁面

編輯:

這是Backbone的collection.comparator文檔,下面是對sort()的解釋

基本上,比較器可以是返回屬性的模型或函數的屬性,也可以是負屬性(如果是數字,則表示降序),或者是字符串或其反向值(降序),如我在此處提供的示例。

因此,比較器返回的屬性如“ id”或“ name”,或“ -id”,“-name”等。(對於字符串,您不能僅使其設為“負”,就需要應用更復雜的函數,如我所寫。)

暫無
暫無

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

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