나는 내 백본 응용 프로그램을 구성 할 RequireJS를 사용하여 다음과 같이 공유기 모듈은 다음과 같습니다모듈러 Backbone.js 앱에서보기 모듈의 라우터를 어떻게 사용할 수 있습니까?
define([
'jquery',
'underscore',
'backbone',
'collections/todos',
'views/todosview'
], function($, _, Backbone, TodosCollection, TodosView){
var AppRouter = Backbone.Router.extend({
routes: {
"": "index",
"category/:name": "hashcategory"
},
initialize: function(options){
// Do something
},
index: function(){
// Do something
},
hashcategory: function(name){
// Do something
}
});
var start = function(){
p = $.ajax({
url: 'data/todolist.json',
dataType: 'json',
data: {},
success: function(data) {
var approuter = new AppRouter({data: data});
Backbone.history.start();
}
});
};
return {
start: start
};
});
을 그리고 전체 응용 프로그램을 실행하는 데 Router.start()
를 사용하는 다른 app
모듈을 가지고있다. 이제 내 Backbone.View 모듈에서이 Router
모듈에서 Router.navigate
을 사용하여 경로를 트리거하려고합니다. 다음과 같이 내보기 모듈의 시작 부분은 다음과 같습니다
define([
'jquery',
'underscore',
'backbone',
'models/todo',
'views/todoview',
'text!templates/todo.html',
'router'
], function($, _, Backbone, TodoModel, TodoView, todoTemplate, Router){...
을하지만이 모듈에 Router
를 사용하고자 할 때, 항상 Router is not defined
을 말한다. 내가하고 싶은 일은 으로이 뷰 모듈에서 어떤 액션이 시작될 때 호출하는 것입니다. 그럼 내가 어떻게 이걸 얻을 수 있니?
당신은 아마 순환 요구 사항이)
app.j의 내용에 대해 약간 혼동 스럽습니까? 고마워! – chaonextdoor
app.js는 실제 백본 앱이 시작되는 위치입니다 (위의 "시작"기능과 같습니다). 그냥 기본적인 애플 리케이션 로직. 아무것도 반환하지 않을 것이고 다른 모듈에는 포함되지 않을 것입니다. 앱이 시작되는 곳일뿐입니다. – PStamatiou
'start' 함수를'route' 모듈에서'app' 모듈로 옮기는 것이 무엇입니까? 그리고 나서, 나는'app' 모듈에서 생성 된 라우터 인스턴스를 내 사건의 변수 인'approuter'에 넣어야합니다. share.js의'YourObject {}'에 넣어 두어야합니다. 그리고 나서 어디서나 shared.js를 사용할 수 있습니다. . 내가 맞습니까? – chaonextdoor