我使用 RequireJS 来组织我的 Backbone 应用程序,我的路由器模块如下:
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
};
});
我还有另一个app
模块用于Router.start()
触发整个应用程序。现在,在我的 Backbone.View 模块中,我想用它Router.navigate
来触发这个Router
模块中的路由。我的 View 模块的开始部分如下:
define([
'jquery',
'underscore',
'backbone',
'models/todo',
'views/todoview',
'text!templates/todo.html',
'router'
], function($, _, Backbone, TodoModel, TodoView, todoTemplate, Router){...
但是当我想Router
在这个模块中使用时,它总是说Router is not defined
. 我想要做的是Router.navigate
在这个 View 模块中触发某些操作时调用。那么我怎么能做到这一点呢?