我有一个非常基本的Backbone应用程序,它使用路由器来实例化视图和集合。在使用应用程序时,我注意到如果我将代码行实例化路由器
router = new DocsRouter();
在application.js文件的顶部,然后该应用程序无效;它必须位于文件的底部。然而,这对我来说没有意义。为什么这一行代码的位置很重要,因为启动应用程序的所有重要内容都发生在路由器内部?我不应该从任何地方触发路由器吗?
window.DocsRouter = Backbone.Router.extend({
initialize : function() {
this.docs = new Docs();
this.docs.fetch();
this.docFormView = new DocFormView({ collection : this.docs });
this.docsView = new DocsCollectionViewTempo({ collection : this.docs });
this.docsView.render();
this.route("doc/:id", "doc", function(id){
console.log(id, this.docs.get(id).toJSON());
});
},
routes : {
"" : "root",
"about" : "about",
"doc/:id" : "doc"
},
root : function() { console.log('Vous êtes à la racine');},
about : function() { console.log('A propos : ceci est un tutorial BackBone');},
doc : function(id) { console.log(id, this.docs.get(id).toJSON()); }
});
router = new DocsRouter();
Backbone.history.start();
答案 0 :(得分:1)
没有。在声明DocRouter之前,您无法创建DocRouter实例。
window.DocsRouter = Backbone.Router.extend({..});
router = new DocsRouter();
这两行的顺序必须是这样。在第一行DocRouter不存在之前,您无法实例化它。