0

ルーターを使用してビューとコレクションをインスタンス化する非常に基本的な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();
4

1 に答える 1

1

いいえ。DocRouterが宣言される前にDocRouterのインスタンスを作成することはできません。

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

これらの2行の順序はこれでなければなりません。最初の行の前にDocRouterが存在しないため、インスタンス化できません。

于 2012-10-23T19:45:52.477 に答える