如何从克隆的集合中分离事件监听器?
How can I detach an event listener from cloned collection?
我正在研究集合中的搜索模型。
为了防止在我进行的所有查询中获取集合 collection.clone()
var filteredContacts = contactsCollection.clone();
filteredContacts.reset(filteredContacts.filter(function(contact) {
if(contact.get("login"))
return contact.get("login").search(new RegExp(Value, "i")) >= 0;
else
return false;
}));
filteredContacts.each(function(contact) {
new ContactView( { model: contact } );
});
contactsCollection中也有listenTo
initialize: function() {
this.listenTo(Backbone, "contacts:open", this.getContacts);
},
从服务器获取联系人。
因此,当我尝试触发此事件时,这两个集合都会捕获此事件。
如何调用 collection.destory 之类的东西?
Backbone 为我们提供了一个函数 stopListening()
。这个方法实际上告诉一个对象停止监听事件。
对于您的情况,我们可以这样进行
var filteredContacts = contactsCollection.clone();
filteredContacts.reset(filteredContacts.filter(function(contact) {
if(contact.get("login"))
return contact.get("login").search(new RegExp(Value, "i")) >= 0;
else
return false;
}));
filteredContacts.stopListening("contacts:open");
filteredContacts.each(function(contact) {
new ContactView( { model: contact } );
});
甚至像下面这样的 contactsCollection 中也有 listenTo
initialize: function() {
this.listenTo(Backbone, "contacts:open", this.getContacts);
},
我正在研究集合中的搜索模型。
为了防止在我进行的所有查询中获取集合 collection.clone()
var filteredContacts = contactsCollection.clone();
filteredContacts.reset(filteredContacts.filter(function(contact) {
if(contact.get("login"))
return contact.get("login").search(new RegExp(Value, "i")) >= 0;
else
return false;
}));
filteredContacts.each(function(contact) {
new ContactView( { model: contact } );
});
contactsCollection中也有listenTo
initialize: function() {
this.listenTo(Backbone, "contacts:open", this.getContacts);
},
从服务器获取联系人。 因此,当我尝试触发此事件时,这两个集合都会捕获此事件。
如何调用 collection.destory 之类的东西?
Backbone 为我们提供了一个函数 stopListening()
。这个方法实际上告诉一个对象停止监听事件。
对于您的情况,我们可以这样进行
var filteredContacts = contactsCollection.clone();
filteredContacts.reset(filteredContacts.filter(function(contact) {
if(contact.get("login"))
return contact.get("login").search(new RegExp(Value, "i")) >= 0;
else
return false;
}));
filteredContacts.stopListening("contacts:open");
filteredContacts.each(function(contact) {
new ContactView( { model: contact } );
});
甚至像下面这样的 contactsCollection 中也有 listenTo
initialize: function() {
this.listenTo(Backbone, "contacts:open", this.getContacts);
},