Search code examples
javascriptbackbone.jsfetchrouterbackbone-boilerplate

Backbone Boilerplate - fetch method don't refresh collection


is my first question here, so I please about some patience and forgive my english:)

When I type link in browser address bar, all is OK. But when I do this inside browser by clicking element, collection is empty. But the main problem is there is always the same response from server, but fetch "dont load" any items, so view render empty collection.

I use Backbone Boilerplate,

Browser.Views.Catalog - it is Backbone.View Browser.Catalog - it is of Backbone.Collection

My router:

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
        });
    },

Solution

  • I belive you should set the catalog in the initialize function

    app.catalog = new Browser.Catalog();
    

    should go in here ( add this function)

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

    the initialize function is called when the page is loaded so when browsing to #catelog it will have been set http://backbonejs.org/#Router-constructor