Object 主干和要求。如何从任何地方访问我的主干路由器
我正在使用requirejs进行我的第一个项目。我有一个路由器和一个视图,我想在单击某个项目时从视图访问我的router.navigate()方法。我喜欢用咖啡脚本。如何使路由器全球化 router.coffee:Object 主干和要求。如何从任何地方访问我的主干路由器,object,backbone.js,requirejs,global,router,Object,Backbone.js,Requirejs,Global,Router,我正在使用requirejs进行我的第一个项目。我有一个路由器和一个视图,我想在单击某个项目时从视图访问我的router.navigate()方法。我喜欢用咖啡脚本。如何使路由器全球化 router.coffee: define [ 'jquery' 'backbone' 'application/views/mainView' 'application/models/app' ],($,Backbone,MainView,App)-> class Router extends Backb
define [
'jquery'
'backbone'
'application/views/mainView'
'application/models/app'
],($,Backbone,MainView,App)->
class Router extends Backbone.Router
routes:
'organisation': 'organisationScreen'
'*actions': 'organisationScreen'
constructor:() ->
super @routes
initialize:()->
Backbone.history.start() #pushState: true
console.log " The Route Initialized"
organisationScreen:()->
$('.slides').fadeOut()
$('.confBlock').removeClass('onshow')
$('.organisationsBlock').addClass('onshow')
咖啡
define [
'jquery'
'backbone'
'application/views/conferenceView'
],($,Backbone,ConferenceView)->
class OrganisationView extends Backbone.View
#el: '#appcontainer'
tagName : 'li'
className : 'organisation'
events:
'click .org-item' : 'choice'
template : _.template($('#Organisation-template').html())
initialize : ()->
...
render: ()->
...
choice:(ev)->
# Call Router.navigate()
所有的
Router::navigate
所做的就是调用Backbone.history.navigate
,所以我会使用它
我认为有三种方法可以解决您的问题:
@options.router
只需在主干对象中存储路由器以及所需的其他全局变量 在路由器初始化中,执行以下操作:
Backbone.application = {};
Backbone.application.router = this;
然后像这样使用它:
define(["backbone"], function (Backbone) {
Backbone.application.router.myaction();
});
为什么不直接调用
Backbone.history.navigate()
?@loganfsmyth噢,对不起,你忘了以答案的形式发布你的问题。:)我已经使用了解决方案3,但我不喜欢它。Backbone.history.navigate()工作正常。但是解决方案2在其他一些问题上对我帮助很大。非常感谢。:)
define(["backbone"], function (Backbone) {
Backbone.application.router.myaction();
});