javascript - collection.fetch() 的选项

标签 javascript backbone.js backbone.js-collections

我正在尝试一次获取多组相同集合类型。获取结果后,我想根据一些“id”对回调中的结果进行排序,这些“id”是我在调用 fetch() 方法之前在集合上设置的。

问题:如何将集合的 id 传递给回调?

我现在正在使用的技巧:我有一个用于存储 id 的数组和一个用于存储结果的数组。在调用 fetch 方法之前,我将 id 推送到 ids 数组,并将结果推送到成功回调中。

这样做的问题:由于 id 是在循环中推送的,因此所有 id 都是按顺序排列的。但是获取是异步发生的,并且首先返回的那个会被插入结果数组中,从而破坏了顺序。

示例代码:

// Current Date
var curDate = new Date();

// List of categories and points
var categories = new Array();
var points = new Array();

// A Backbone Collection
var users = new app.UserList();

for(var i=0; i<=curDate.getMonth(); i++) {
    users.setMonthNumber(curDate.getMonth()-i);
    categories.unshift(parseInt(users.getMonthNumber()+1) + '/12');

    users.fetch({
        success: function(collection, response){
            points.unshift(collection.meta.total_count);
            active_user_chart.series[0].setData(points);
            active_user_chart.axes[0].setCategories(categories);
        },
    });
}

说明:用户列表具有相应的月份编号,必须根据该月份编号进行排序。它们存储在类别中。列表中的用户数就是结果。它以点的形式存储。

我该如何解决这个问题?

最佳答案

http://backbonejs.org/#Collection-parse

var Tweets = Backbone.Collection.extend({
  // The Twitter Search API returns tweets under "results".
  parse: function(response) {
    response.results.forEach(function(result){
        result['myOwnId']=result.xyz+result.abc;
    });
    return response.results;
  }
});

上面的代码未经测试,只是解释了如何将自己的属性添加到集合中。

为了拥有自己的排序逻辑,您必须在集合上定义自己的比较器。来自文档

A comparator can be defined as a sortBy (pass a function that takes a single argument), as a sort (pass a comparator function that expects two arguments), or as a string indicating the attribute to sort by.

示例比较器可能如下所示:

Backbone.Collection.extend({
      // The Twitter Search API returns tweets under "results".
      sortBy: function(model) {
        return model.get('myOwnId');
      }
    });

关于javascript - collection.fetch() 的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24624185/

相关文章:

javascript - 推迟将 Backbone.js 集合与服务器同步

javascript - 将多个函数绑定(bind)到主干中的同一事件

javascript - Backbone : How to update a collection view when collection changes?

javascript - 查找在 Backbone 集合中没有属性的模型

php - 发布到之前页面后返回(graph api facebook php sdk)

php - 如何转义 php 中的新行字符以输出到 javascript 字符串值?

javascript - 如何动态为html元素分配类?

javascript - Array.prototype.unshift.call(arguments,....) 怎么办?

jquery - 是否可以停止 Backbone "read"请求

javascript - 使用 Backbone.paginator 进行多个排序查询参数