I use RequireJS to organize my Backbone app and my Router module is as follows:
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
};
});
And I have another app
module which uses Router.start()
to trigger the whole app.
Now, in my Backbone.View module, I want to use Router.navigate
to trigger the route in this Router
module.
The starting part of my View module is as follows:
define([
'jquery',
'underscore',
'backbone',
'models/todo',
'views/todoview',
'text!templates/todo.html',
'router'
], function($, _, Backbone, TodoModel, TodoView, todoTemplate, Router){...
But when I want to use Router
in this module, it always says Router is not defined
. What I want to do is to call Router.navigate
when some action is fired in this View module. So how could I achieve this?