首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在主干中对集合进行排序

如何在主干中对集合进行排序
EN

Stack Overflow用户
提问于 2012-08-17 12:32:48
回答 2查看 242关注 0票数 0

在传递给模板之前,我想对我的选择进行排序。我在视图的渲染功能中使用

代码语言:javascript
运行
复制
CollectionForTelplate : this.Collection

我把它当作

代码语言:javascript
运行
复制
var self = this;
//fetch done here
if (Collection.length > 0) {
    _.each(Collection, function(Model) {
        JSON.stringify(Model);
    }, this);
};
self.Collection = Collection;
self.render;
  1. 还有其他方法可以将集合传递给模板吗?
  2. 如何根据模型的string字段对集合进行排序,比如Model.name?我尝试在集合中编写一个比较器,并在视图中编写一个排序函数,但不幸的是,它对我不起作用。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-17 13:29:08

还有其他方法可以将集合传递给模板吗?

是的,集合有一个toJSON() method,所以您可以简单地做一些类似的事情

代码语言:javascript
运行
复制
render: function() {
  this._template({list: this.toJSON()}); //assuming your template is already compiled
  return this;
}

如何根据模型的string字段对集合进行排序,比如Model.name?我尝试在集合中编写一个比较器,并在视图中编写一个排序函数,但不幸的是,它对我不起作用。

您可以简单地在集合上定义比较器函数,并且它应该保持排序,下面是文档中给出的示例

代码语言:javascript
运行
复制
chapters.comparator = function(chapter) {
  return chapter.get("page");
};
票数 0
EN

Stack Overflow用户

发布于 2012-08-17 12:43:05

实现Collectioncompatarator函数,在文档中定义为

如果您定义了一个比较器,它将用于按排序顺序维护集合。

这样,您的集合将在添加、删除等之后自动按排序顺序保存。您可以将其实现为sort

代码语言:javascript
运行
复制
comparator: function(model1, model2) {
  if (model1 comes before model 2) {
    return -1;
  } else if (model1 is equal to model 2) {
    return 0;
  } else { // model1 comes after model 2
    return 1;
  }
}

sortBy

代码语言:javascript
运行
复制
comparator: function(model) {
  // Return some numeral or string attribute and it will be ordered by it
  // == smaller numbers come first / strings are sorted into alphabet order
  return model.get('someAttribute');
}

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12005898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档