我正在使用JavaScript框架在Parse中编写应用程序。在我看来,我有一个类“新页面”的链接。在JS代码中,我有:
events: {
"click .new-page" : "createPage",
}
createPage是:
createReel: function() {
var self = this;
// Get current pagelist
var pages= new PageList;
pages.query = new Parse.Query(Page);
pages.query.equalTo("owner", Parse.User.current());
pages.query.ascending("order");
pages.fetch({
success: function(pagelist) {
var newPage = new Page;
newPage .save({
success: function(newpage) {
// Redirect to page edit
new PageEditView();
}
});
}
});
}
第一次,这很好用 - 创建新页面,然后进入该页面的编辑模式。但是如果我然后使用“添加页面”按钮返回视图并再次单击它,我会得到2个新页面。如果我再做一次,我会得到4,依此类推。
我认为事件是“累积”,因此单击按钮的次数越多,事件被触发的次数就越多。
我不知道从哪里开始寻找。
答案 0 :(得分:1)
迟到的答案,但我遇到了类似的问题。
我犯的错误是我每次需要时都会再次创建视图实例。
这不是Backbone的工作方式。
视图(通常)创建一次。当他们的模型发生变化时,会再次渲染。
每次用户在此行保存时,您似乎都在实例化视图
PageEditView();
这就是事件堆积的时候。
在您启动页面时实例化该视图,然后在更新该视图的模型时对其进行渲染。
在原生bakbone中,事件处理程序可以监听模型更改。不知怎的,它在Parse骨干版本中不起作用(或者我无法使其工作)。所以现在,我用
手动完成PageEditView.model = model
PageEditView.render();
答案 1 :(得分:0)
确保在调用新的PageEditView之前取消置换事件。