我知道函数listenTo,我需要在困难的情况下应用它。我有一个数组,数组的每个条目都是对集合的引用,我需要等待所有集合都被完全提取。我的提取函数集合通过重置函数存储数据。我听事件重置。

var postTwitter= new Array();
var postInstagram= new Array();

var i=0;
    _.each(AttoriCollectionDb.models, function (model) {
        postTwitter[i]=new Posts();
        postTwitter[i].fetch({'user_id':model.get("id_twitter"),'type':'twitter'});
        postInstagram[i]=new Posts();
        postInstagram[i].fetch({'user_id':model.get("id_instagram"),'type':'instagram'});
        i++;

      });


      this.listenTo(postTwitter[0], 'reset', ok1);// now wait only one collection but I need wait all collection completely fetched.


在上面的代码中,我仅等待单个集合重置,如何侦听所有集合何时都将发生重置事件?

最佳答案

所以这是我的方法:

1)添加自定义事件“ reset:allPosts”以在所有帖子都触发“ reset”时触发

2)收集要调用的“重置”触发器的总数(所有Posts instagram + twitter)。我将此命名为“ totalPosts”

3)设置作用域变量“ totalResetted”,以便在Post触发“重置”后可以增量添加

4)在触发每个“重置”之后,将一个添加到“ totalResetted”中,然后检查“ totalResetted”是否等于“ totalPosts”。如果相等,则表示所有帖子均已“重置”

这是我想出的:

var postTwitter= new Array();
var postInstagram= new Array();

var totalPosts= AttoriCollectionDb.models.length * 2; // Times two because we're adding Twitter and Instagram
var totalResetted= 0;

var checkResetted = function() {
  totalResetted++;
  if (totalPosts === totalResetted) this.trigger('reset:allPosts');
}

// When all posts are 'reset' then do something;
this.on('reset:allPosts', function(){ alert('all posts fired reset!!') });

var i=0;
var that = this;
    _.each(AttoriCollectionDb.models, function (model) {
        postTwitter[i]=new Posts();
        that.listenToOnce( postTwitter[i], 'reset', checkResetted);
        postTwitter[i].fetch({'user_id':model.get("id_twitter"),'type':'twitter'});

        postInstagram[i]=new Posts();
        that.listenToOnce( postInstagram[i], 'reset', checkResetted);
        postInstagram[i].fetch({'user_id':model.get("id_instagram"),'type':'instagram'});

        i++;

      });

关于javascript - Backbone 多个listenTo,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23445920/

10-11 14:46