确认框问我无数次
Confirm-Box asking me endless times
如果我真的确定我要删除该文件,我总是被问到没完没了。我不知道为什么这个事件会触发多次。
我正在使用 backbone.js。
这是我的视图(已缩短)。单击 "span.delete" 它会触发删除功能(它工作完美)。
XFFView = Backbone.View.extend({
itemTpl: _.template($("#xff-item").html()),
events: {
"click span.delete" : "remove"
},
remove: function() {
app.delFromList(this.$el.children('li').data('target'));
this.$el.remove();
}
});
这是 delFromList 函数,它触发了确认请求。我一次又一次地被问到,直到我点击 'cancel'。
delFromList: function(id) {
if (confirm('Are you sure you want to delete this file?')) {
this.collection.get(id).destroy();
}
},
相信我已经找到你的问题了,正如我所料:
XFFView = Backbone.View.extend({
itemTpl: _.template($("#xff-item").html()),
events: {
"click span.delete" : "remove",
"click span.abort" : "abort"
},
initialize: function() {
this.listenTo(this.model, "change", this.render);
this.listenTo(this.model, "destroy", this.remove);
},
render: function() {
this.$el.html(this.itemTpl(this.model.toJSON()));
return this;
},
remove: function() {
app.delXFFFromList(this.$el.children('li').children('span.delete.badge').data('target'));
this.$el.remove();
}
据我所知,这一行:
this.listenTo(this.model, "destroy", this.remove);
正在侦听要删除的模型,它在这一行中:
this.collection.get(id).destroy();
然后将再次调用此代码:
remove: function() {
app.delXFFFromList(this.$el.children('li').children('span.delete.badge').data('target'));
this.$el.remove();
}
基本上是将您的代码投入无限循环,或者直到您的集合清空。
要么改变这一行
this.listenTo(this.model, "destroy", this.remove);
调用 this.destroy,或将您的删除方法重命名为类似 removeEntry 的名称,以免与删除视图混淆。
如果我真的确定我要删除该文件,我总是被问到没完没了。我不知道为什么这个事件会触发多次。
我正在使用 backbone.js。
这是我的视图(已缩短)。单击 "span.delete" 它会触发删除功能(它工作完美)。
XFFView = Backbone.View.extend({
itemTpl: _.template($("#xff-item").html()),
events: {
"click span.delete" : "remove"
},
remove: function() {
app.delFromList(this.$el.children('li').data('target'));
this.$el.remove();
}
});
这是 delFromList 函数,它触发了确认请求。我一次又一次地被问到,直到我点击 'cancel'。
delFromList: function(id) {
if (confirm('Are you sure you want to delete this file?')) {
this.collection.get(id).destroy();
}
},
相信我已经找到你的问题了,正如我所料:
XFFView = Backbone.View.extend({
itemTpl: _.template($("#xff-item").html()),
events: {
"click span.delete" : "remove",
"click span.abort" : "abort"
},
initialize: function() {
this.listenTo(this.model, "change", this.render);
this.listenTo(this.model, "destroy", this.remove);
},
render: function() {
this.$el.html(this.itemTpl(this.model.toJSON()));
return this;
},
remove: function() {
app.delXFFFromList(this.$el.children('li').children('span.delete.badge').data('target'));
this.$el.remove();
}
据我所知,这一行:
this.listenTo(this.model, "destroy", this.remove);
正在侦听要删除的模型,它在这一行中:
this.collection.get(id).destroy();
然后将再次调用此代码:
remove: function() {
app.delXFFFromList(this.$el.children('li').children('span.delete.badge').data('target'));
this.$el.remove();
}
基本上是将您的代码投入无限循环,或者直到您的集合清空。
要么改变这一行
this.listenTo(this.model, "destroy", this.remove);
调用 this.destroy,或将您的删除方法重命名为类似 removeEntry 的名称,以免与删除视图混淆。