Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干集合重置和解析_Javascript_Backbone.js_Backbone.js Collections - Fatal编程技术网

Javascript 主干集合重置和解析

Javascript 主干集合重置和解析,javascript,backbone.js,backbone.js-collections,Javascript,Backbone.js,Backbone.js Collections,重置集合时,我正在主干应用程序中呈现视图 initialize: function(options) { this.options = options; this.model.get('projects').fetch({ data: { organisation_id: this.model.get('id') } }, {reset:true}); this.model.get('projects'

重置集合时,我正在主干应用程序中呈现视图

initialize: function(options) {
    this.options = options;

    this.model.get('projects').fetch({
        data: { 
            organisation_id: this.model.get('id')
        }
    }, {reset:true});

    this.model.get('projects').on('reset', this.render, this);
    this.model.get('projects').on('add', this.addNewProject, this);
    this.model.get('projects').on('sort', this.addProjects, this);
},

render: function() {

        console.log(this.model.get('projects').state);

        this.$el.html( this.template({
            is_owner: this.options.is_owner,
            className: this.options.className,
            pagination: this.model.get('projects').state
        }));

        this.addProjects();

        this.filter = new Pops.Views.OrganisationProjectsFilter({
            el:this.$el.find('.div-organisation-filter-wrapper'),
            model : this.model,
            collection: this.collection
        });

        this.filter.render().el;

        return this;
    },
正如您所看到的,我运行了一个fetch,并将我的集合重置为所获取的数据。我的问题是,在视图中,我试图使用一些来自服务器的值,它们似乎为null,这是我的集合

App.Collections.PaginatedProjects= 

Backbone.PageableCollection.extend({

        url: App.API_ROOT + "/projects/paginated",

        // Initial pagination states
        state: {
          pageSize: 2,
          sortKey: "name",
          order: 1,
          totalRecords:null
        },

        // You can remap the query parameters from `state` keys from
        // the default to those your server supports
        queryParams: {
          totalPages: null,
          totalRecords: null,
          sortKey: "sort",
        },

        // get the state from Github's search API result
        parseState: function (resp, queryParams, state, options) {
            this.state.totalRecords = resp.total;
            this.state.totalPages = resp.total / this.state.pageSize;
            this.state.lastPage = this.state.totalPages;
        },

        // get the actual records
        parseRecords: function (resp, options) {
          return resp.data;
        }
});

正如您所看到的,我正在运行解析函数来检索和设置值,如果我控制台我的集合,我可以看到正确的值,但是当我尝试在我的视图中使用它们时,它们是空的,我使用的解析或重置是错误的,或者两者都是错误的?

我认为这是因为渲染数据时还没有到达。试试这个:

this.model.get('projects').fetch({
    success: function(model,response) {
        var data = //some of your answer

    }   

});

据我所知,你做了一件好事

console.log(this.model.get('projects').state);
并发现它打印正确,但在

this.template({
        is_owner: this.options.is_owner,
        className: this.options.className,
        pagination: this.model.get('projects').state
    })
那么它不出现了吗?如果是这样的话,我不认为这是主干收集的问题。我认为这与您如何访问模板中的数据有关。 如果您使用的是handlebar,因为这个“state”变量是json

你可能用

{{pagination.pageSize}}
在hbs文件中打印出来。我记得它不久前还不受支持。试用

{{pagination/pageSize}}
此外,根据Handlebar文档,如果此代码段位于{{{if}}或{{{each}等中,则可能需要进入一个范围。使用

{{../pagination/pageSize}} or {{../../pagination/pageSize}}

不久前我遇到了这个问题,我做了很多搜索来发现这个问题。希望它有助于显示模板&您使用的模板引擎是什么?