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