调用undelegateEvents()view remove()方法是不好的做法?为什么骨干人员默认不包括它?
我意识到,当简单地重新初始化视图变量时,我陷入了这么多绑定问题.虽然undelegateEvents()在创建新视图时会自动调用,但它会尝试取消新实例化视图的事件,而不是前一个视图.因此,除非每次手动调用它,否则ghost事件回调仍然存在并且搞砸了我的应用程序.
处理这个问题的最佳方法是什么?
我正在声明一个这样的视图:
var VirtualFileSelectorView = Backbone.View.extend({
selected: function() {
console.log("selected function");
},
initialize: function() {
// Shorthand for the application namespace
var app = brickpile.app;
// bind to the selected event
app.bind('selected', this.selected, this);
}
});
Run Code Online (Sandbox Code Playgroud)
然后我实例化了这个View的两个实例,你可以在这里看到:http://cl.ly/H5WI
问题是当选择的事件被触发时,所选的功能被调用两次?
我在骨干文档中读到调用collection.reset()清除了集合.我想知道它是否也删除了模型,还是继续存在于内存中?
如果没有删除它们是否有更简单的方法来删除集合中的所有模型而不重复模型和调用model.remove()?
我有一个Backbone集合,当我添加一个新模型时,"添加"事件似乎并没有像我期望的那样工作.我绑定了2个视图来监听集合上的添加事件,但只有一个似乎得到了事件的通知,当发生这种情况时,没有PUT请求被发送到我的服务器.当我删除第二个绑定时,另一个工作,并发送PUT请求.这是代码片段:
var FlagList = Backbone.Collection.extend({
model: Flag // model not shown here... let me know if it would help to see
});
var FlagCollectionView = Backbone.View.extend({
el: $('ul.#flags'),
initialize: function() {
flags.bind('add', this.addFlag, this); // this one doesn't fire!!
},
addFlag: function(flag) {
alert("got it 1"); // I never see this popup
}
});
var AddFlagView = Backbone.View.extend({
el: $("#addFlagPopup"),
events: {
"click #addFlag": "addFlag"
},
initialize: function() {
flags.bind('add', this.closePopup, this); // this one fires!!
}
addFlag: function() { …Run Code Online (Sandbox Code Playgroud)