0

ここでの私の最初の質問なので、少しの忍耐をお願いし、私の英語を許してください:)

ブラウザのアドレスバーにリンクを入力すると、すべて問題ありません。しかし、要素をクリックしてブラウザ内でこれを行うと、コレクションは空になります。しかし、主な問題は、サーバーから常に同じ応答が返されることですが、アイテムを「ロードしない」ようにフェッチするため、空のコレクションをレンダリングしてください。

Backbone Boilerplate を使用します。

Browser.Views.Catalog - Backbone.View です Browser.Catalog - Backbone.Collection です

私のルーター:

var Router = Backbone.Router.extend({

    routes: {
        '' : 'browse'          
    },
    refreshCatalog: function(folder){
        app.layout.setViews({
            "#catalog" : new Browser.Views.Catalog({
                collection: app.catalog
            })
        }).render();
    },
    browse: function(folder){

        app.catalog = new Browser.Catalog();

        app.folders.fetch({
            error: function() { console.log(arguments); },
            success: this.refreshFolders(folder),
            data: $.param({folder: folder}),
            cache:false
        });
        //app.catalog = new Browser.Catalog();            
        app.catalog.fetch({
            error: function() { console.log(arguments); },
            success: this.refreshCatalog(folder),
            data: $.param({folder: folder}),
            cache:false
        });
    },
4

1 に答える 1

1

初期化関数でカタログを設定する必要があると思います

app.catalog = new Browser.Catalog();

ここに入る必要があります(この関数を追加します)

initialize: function (options) {
    app.catalog = new Browser.Catalog();
}

初期化関数はページが読み込まれるときに呼び出されるため、#catelog を参照すると、http://backbonejs.org/#Router-constructor が設定されます

于 2013-05-15T13:17:36.420 に答える