cha*_*oor 3 requirejs backbone.js backbone-routing
我使用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
};
});
Run Code Online (Sandbox Code Playgroud)
我有另一个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){...
Run Code Online (Sandbox Code Playgroud)
但是当我想Router在这个模块中使用时,它总是说Router is not defined.我想要做的是Router.navigate在此View模块中触发某些操作时调用.那我该怎么做呢?
创建一个单独的模块,该模块包含在您使用的每个其他模块中 - 它只是创建一个对象,您可以使用该对象来连接路由器实例,并从以后您希望的任何视图或模块中调用它.(除了存储数据等其他东西,并轻松传递给其他模块)
将此模块包含在此处首先粘贴的路由器模块中.从路由器模块底部删除启动功能.然后在该文件的末尾返回AppRouter.
在最终启动主干并创建路由器的应用程序模块中,您可以将路由器初始化保存到我所指的共享对象中.
IE浏览器,
shared.js - >没有deps,但是创建了YourObject = {}; 并返回YourObject router.js - >包含shared.js app.js - >包含shared.js和router.js.应用程序设置路由器并保存到YourObject.router然后启动主干.您现在可以从需要此shared.js模块的任何其他模块调用YourObject.router.navigate()
| 归档时间: |
|
| 查看次数: |
2943 次 |
| 最近记录: |