gpt4 book ai didi

javascript - 如何对主干模型/ View 进行排序?

转载 作者:行者123 更新时间:2023-11-29 18:25:47 25 4
gpt4 key购买 nike

使用 Backbone 使模型的任何 View 按顺序排列的基本方法是什么?我有一些想法,但还不完全清楚。

我想通过一个名为“created_at”的字段来保持它们的顺序。我知道可以在集合中提供比较器函数,但我不确定它是如何工作的。

我还希望集合中的此顺序始终反射(reflect)在 View 中(在列表中)。不过,我不确定我在哪里与模型联系在一起。我猜我在寻找索引属性的变化,然后更新一个以匹配?

非常感谢任何帮助或解释!

最佳答案

当你定义你的集合时,你也定义了比较器。我最近是这样做的:

        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();
})
);
},
}

这些是我在我的集​​合代码中定义的。

然后,在渲染我的 Collection View 时,我只是这样做了(在我看来,这是在 initialize() 中呈现整个集合:

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

因为这段代码在你的 View 的初始化中,你可以定义你的比较器当你初始化你的 View 时,并像这样传递一个比较器的名称:

var directory = new pageView("d_id");

并且通过 initialize(comparator_id) 您可以将其传递给初始化中的代码:

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

然后我可以在渲染和重新渲染 View /页面时使用该集合

编辑:

这里是 Backbone's collection.comparator文档,在它的正下方是 sort()

的解释

基本上,比较器可以是模型的属性或返回属性的函数,或者一个负属性,如果它是数字,用于降序,或降序的字符串或其反向值就像我在这里给你的例子一样。

因此,比较器返回一个属性,如“id”或“name”,或“-id”、“-name”等。(对于字符串,您不能只将其设为“负数”,您需要应用更复杂的函数,如我所写。)

关于javascript - 如何对主干模型/ View 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13391067/

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