数组上的句柄设置为Backbone集合

Handle on array setted to Backbone collection

本文关键字:Backbone 集合 设置 句柄 数组      更新时间:2024-02-26

Folks,当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 ?
      }
 });

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

col.fetch({reset: true});

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

Backbone.Collection.extend({
    events: {'reset': 'resetHappend'},
    resetHappened: function() {
        // whatever you need to do
    },
    // ...
我找到了答案。
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);
});

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