Backbone:构造函数在文件中的位置

时间:2012-10-23 15:55:14

标签: javascript backbone.js

我有一个非常基本的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();

1 个答案:

答案 0 :(得分:1)

没有。在声明DocRouter之前,您无法创建DocRouter实例。

window.DocsRouter = Backbone.Router.extend({..});
router = new DocsRouter();

这两行的顺序必须是这样。在第一行DocRouter不存在之前,您无法实例化它。