[英]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.