我正在使用Node/express和Mongodb創建我的第一個骨幹應用程序。該應用程序是一個在線食品菜單和訂購系統,可在首頁加載時從mongo收集所有數據並將其推送到Backbone集合中。我在骨幹路由器中使用初始化函數來獲取()數據並將其放入集合中。我的問題是,在初始化函數完成之前,索引路由器正在加載。我已經確認初始化函數能夠正確運行,因爲我可以在瀏覽器控制檯中訪問該集合。在骨幹路由器中使用初始化函數
我可能要對這個錯誤的方式,但這裏是我的路由器的一個簡化版本:
GDB.Router = Backbone.Router.extend ({
routes: {
'': 'index',
'drinks': 'drinks'
},
meals: {},
initialize: function() {
meals = new GDB.Collections.Meals
meals.fetch();
},
index: function() {
var mealsView = new GDB.Views.Meals ({collection: meals});
$('#GDBContainer').append(mealsView.render().el);
},
drinks: function() {
var drinksView = new GDB.Views.Meals ({collection: meals.byCategory('drinks')});
$('#GDBContainer').append(drinksView.render().el);
}
});
我有一個類似的解決方案,但我把fetch方法放在每個路由器方法中。問題在於,當我已經擁有我需要的所有內容時,就會發出ajax請求,並且每次更改路由時都會重新填充集合,這會影響集合的目的。我希望Backbone會延遲任何路由器方法的啓動,直到initialize方法及其內部的任何內容完成執行。謝謝您的幫助! –