处理设置为Backbone集合的阵列

时间:2015-02-20 21:37:07

标签: javascript backbone.js

伙计们,我怎么能赶上' Backbone集合接收带数据的数组时的事件?我需要这个来循环数据并在某些条件下加入一些项目。 我有:

MyColl = Backbone.Collection.extend({
    model : App.Models.Movie,
    url: '/movies/start',
    events : {
        'then': 'show', // no one is calling
        'fetch': 'show'
    },
    show: function() {
        console.log(this.models);
        console.log(this.collection);
    }
});

在获取数据后,我需要对数据做一些神奇的事情。谢谢你的回答。

我尝试了所有这些,但没有任何作用..

Backbone.Collection.extend({
    model : App.Models.Movie,
    url: '/movies/start',
    initialize: function() {
        console.log(this.models);
        this.models.on('change', this.print, this);
     },
     events: {
        'add' : 'print',
        'change': 'print',
        'fetch': 'print'
      },
      print: function() {
         console.log(this.models + '!!!!'); // HOW TO CALL THIS, WHEN DATA IS COMING TO THIS COLLECTION AFTER FETCH ?
      }
 });

2 个答案:

答案 0 :(得分:0)

从服务器获取连接时,请确保reset为真:

col.fetch({reset: true});

然后注意集合中的reset事件:

Backbone.Collection.extend({

    events: {'reset': 'resetHappend'},

    resetHappened: function() {
        // whatever you need to do
    },

    // ...

答案 1 :(得分:0)

我找到了答案。

Backbone.Collection.extend({
    model : App.Models.Movie,
    url: '/movies/start',
    initialize: function() {
        this.on('sync', this.joinItems, this);
    },
    joinItems: function() {
        console.log('Now I could loop over the data');
        console.log(this.models);
    }
});

然后:

movies.fetch().then(function() {
    var moviesView = new App.Views.MoviesView({collection: movies});
    $(document.body).append(moviesView.render().el);
});

这就是我所需要的。感谢所有