var Router = Backbone.Router.extend({
routes:{
'notes': 'showNotes',
"note/:noteId": "openNote"
},
showNotes: function() {
new app.NotesView;
},
openNote: function(noteId) {
var NotesCollection = new app.NotesCollection();
NotesCollection.fetch();
var view = new app.NotesView({
currentModel : NotesCollection.get(noteId)
})
}
});
当我每次导航到domain.com/#notes时出现问题,出现双重视图,并且多次触发任何事件。
答案 0 :(得分:1)
我认为这是因为每次去那里,你都会创建一个新视图(旧视图仍然存在)。相反,您可以只创建一次视图并在showNotes上调用render吗?
另外,作为旁注,fetch()是一个异步调用,所以你必须等到通过传入一个回调(成功函数)并在那里进行计算来获取数据。
这样的事情:
var notesView = new app.NotesView;
var Router = Backbone.Router.extend({
routes:{
'notes': 'showNotes',
"note/:noteId": "openNote"
},
showNotes: function() {
notesView.render(); // or append notesView.$el into the dom somewhere
},
openNote: function(noteId) {
var NotesCollection = new app.NotesCollection();
NotesCollection.fetch({
success: function(){
notesView.setModel(NotesCollection.get(noteId); // make this method youself
}
});
}
});