私は私のバックボーンアプリを整理するためにRequireJSを使用して、次のように私のルータモジュールは次のとおりです。モジュール式のBackbone.jsアプリでViewモジュールでRouterを使用するにはどうすればいいですか?
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
を言います。私がしたいのは、このViewモジュールで何らかのアクションが発生したときにRouter.navigate
に電話することです。だから私はこれをどのように達成できますか?
私はapp.jの内容についてちょっと混乱しています。それについてもっと書いてください。どうも! – chaonextdoor
app.jsは、実際のバックボーンアプリが起動する場所です(上記の「スタート」機能など)。基本的なアプリロジックですそれは何も返されず、他のモジュールには含まれません。アプリが起動する場所です。 – PStamatiou
'start'関数を' route'モジュールから 'app'モジュールに移動することは何ですか?その後、 'app'モジュールで作成されたルータインスタンスを私の場合は' approuter'変数に入れ、share.jsの 'YourObject {}'に入れて、それからどこでもshared.jsを使うことができます。私は正しい? – chaonextdoor