【发布时间】:2012-09-23 17:54:13
【问题描述】:
我有一个 Backbone 集合,当我向其中添加一个新模型时,“add”事件似乎没有像我预期的那样工作。我已经绑定了 2 个视图来监听集合上的添加事件,但似乎只有一个视图收到了事件通知,并且当这种情况发生时,没有 PUT 请求发送到我的服务器。当我删除第二个绑定时,另一个工作并发送 PUT 请求。这是代码sn-ps:
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() {
flags.create(new Flag);
},
closePopup: function() {
alert("got it 2"); // I see this popup
}
});
var flags = new FlagList;
var addFlagView = new AddFlagView;
var flagCollectionView = new FlagCollectionView;
【问题讨论】:
-
这是实际的执行顺序吗?即:在初始化 flagCollectionView 之前是否发送了来自“单击#addFlag”的事件?在您期望事件触发之前将事件绑定到模型和集合,这一点很重要
标签: backbone.js backbone-events