我知道函数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/