저는 Node/express와 Mongodb를 사용하여 첫 번째 백본 응용 프로그램을 만드는 중입니다. 이 앱은 첫 번째 페이지로드시 mongo의 모든 데이터를 수집하고 백본 컬렉션으로 푸시하는 온라인 음식 메뉴 및 주문 시스템입니다. 백본 라우터에서 초기화 함수를 사용하여 데이터를 가져 와서 컬렉션에 넣습니다. 내 문제는 인덱스 라우터가 초기화 기능이 완료되기 전에로드된다는 것입니다. 브라우저 콘솔에서 컬렉션에 액세스 할 수 있기 때문에 initialize 함수가 올바르게 실행되는지 확인했습니다.백본 라우터에서 초기화 기능 사용
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 메소드를 각각의 라우터 메소드에 넣었다. 문제는 아약스 요청이 이루어지고 콜렉션의 목적을 상실하는 루트를 변경할 때마다 컬렉션이 다시 채워진다는 것입니다. Backbone이 초기화 메소드와 그 내부의 아무 것도 실행이 끝날 때까지 라우터 메소드의 시작을 지연 시키길 바랬습니다. 도와 주셔서 감사합니다! –