Backbone Boilerplate - fetch方法不刷新集合

时间:2013-05-15 11:15:48

标签: javascript backbone.js fetch router backbone-boilerplate

这是我的第一个问题,所以我请耐心等待原谅我的英语:)

当我在浏览器地址栏中输入链接时,一切正常。但是当我通过单击元素在浏览器中执行此操作时,集合为空。但主要问题是服务器始终存在相同的响应,但是获取“不加载”任何项目,因此视图呈现为空集合。

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

1 个答案:

答案 0 :(得分:1)

我相信你应该在初始化函数中设置目录

app.catalog = new Browser.Catalog();

应该放在这里(添加此功能)

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

在加载页面时调用initialize函数,因此在浏览#catelog时,它将被设置为http://backbonejs.org/#Router-constructor