Backbone.js 木偶js路由-我在这里做错了什么?I';我发现路由操作未定义的错误?
只是想得到一些基本的路由和运行。看过很多例子后,我认为下面的代码应该可以工作,但是当我运行时,我得到一个错误“无法获取未定义或空引用的属性'doChat'。初始化顺序是否有误Backbone.js 木偶js路由-我在这里做错了什么?I';我发现路由操作未定义的错误?,backbone.js,marionette,backbone-routing,Backbone.js,Marionette,Backbone Routing,只是想得到一些基本的路由和运行。看过很多例子后,我认为下面的代码应该可以工作,但是当我运行时,我得到一个错误“无法获取未定义或空引用的属性'doChat'。初始化顺序是否有误 require(["marionette", "jquery.bootstrap", "jqueryui"], function (Marionette) { window.App = new Marionette.Application(); App.start();
require(["marionette", "jquery.bootstrap", "jqueryui"], function (Marionette) {
window.App = new Marionette.Application();
App.start();
App.addRegions({
//add some regions here
});
//Set up routing
var AppRouter = Marionette.AppRouter.extend({
appRoutes: {
"": "doDefault",
"chat": "doChat"
},
doDefault: function () {
alert("doing default...")
},
doChat: function () {
alert("doing chat...")
}
});
var router = new AppRouter();
//History
if (Backbone.history) {
Backbone.history.start();
}
})
AppRouter允许两种类型的路由,即
路由
属性中定义的标准主干路由和调用appRoutes
属性中定义的另一个对象中的函数的路由
因此,要使上述代码正常工作,可以执行以下两种操作之一。最快的方法是将appRoutes
属性更改为routes
,这将执行正常的主干路由。第二个选项是创建另一个对象,并在实例化期间将其作为控制器传递给AppRouter
:
var myController = {
doDefault: function () {
alert("doing default...")
},
doChat: function () {
alert("doing chat...")
}
}
var router = new AppRouter({
controller: myController
});
批准人对此进行了详细说明。是的。我懂了。选项2,控制器选项正在工作,对我来说似乎是最好的。谢谢你。我认为这些对象,路由器和控制器,应该在不同的文件中。我看到了一些例子,我想尝试一下。我还有其他一些问题,关于我是否应该使用路由来完成我所追求的目标,但它们属于另一篇文章。再次感谢。是的,我同意它们应该放在不同的文件中。我的应用程序往往在每个文件一个对象的基础上运行。保持清洁。