我试图将一个分页集合(backbone.paginator插件)传递给多个视图,这样就可以共享它,并且可以使用相同的集合调用三个视图的函数。
但是,我的主视图(AttendeesView)正在调用其他视图(每页调用PaginationBarView和AttendeeView )。我试着通过视图的构造函数和路由器传递它。我似乎无法使它工作,所以我需要一个想法,以便我可以工作。
编辑:顺便说一下,当我试图向集合中添加一个事件时,我得到的错误是在 PaginatedBar上的错误。还没找到。
AttendeesCollection (分页)
define([
'jQuery',
'Underscore',
'Backbone',
'models/AttendeeModel',
'libs/plugins/backbone.paginator'
],function($, _, Backbone, Attendee,Paginator){
var AttendeesCollection = Paginator.requestPager.extend({
model: Attendee,
... (Works)
return AttendeesCollection;
});define([
'jQuery',
'Underscore',
'Backbone',
'libs/plugins/bootstrap-dropdown',
'text!templates/PaginationBar.phtml'
],function($, _, Backbone, twdd, PaginationBarTPL){
var PaginationBar = Backbone.View.extend({
events: {
'click a.PBNext': 'nextResultPage',
'click a.PBPrev': 'previousResultPage',
'click a.PBSort': 'updateSortBy',
'click a.PBPage': 'gotoPage'
},
initialize: function(){
_.bindAll(this,'render','updateSortBy','nextResultPage', 'previousResultPage', 'gotoPage');
this.collection.on('reset', this.render, this);
this.collection.on('change', this.render, this);
}
(...)
});
return PaginationBar;
});define([
'jQuery',
'Underscore',
'Backbone',
'facade',
'views/PaginationBarView',
'text!templates/attendees.phtml',
'collections/AttendeesCollection'
],function($, _, Backbone,facade,PaginationBarView,AttendeesTPL,AttendeesCollection){
var AttendeesView = Backbone.View.extend({
el: "#attendees",
collection: new AttendeesCollection,
paginationbar: new PaginationBarView({collection: this.collection}),
initialize: function(){
_.bindAll(this, 'render', 'onClose');
$(this.el).find(".paginationBar").append(this.paginationbar.render().el)
this.collection.on('change', this.addAll, this);
this.collection.on('reset', this.addAll, this);
this.collection.on('add', this.addOne, this);
this.collection.pager();
},
(...)
});
return AttendeesView;
});发布于 2012-08-20 12:56:41
在视图定义中,在PagniationBarView存在之前创建this.collection。我建议把它搬到initialize()
var AttendeesView = Backbone.View.extend({
el: "#attendees",
collection: new AttendeesCollection,
paginationbar: null, // Do not create the view here
initialize: function(){
_.bindAll(this, 'render', 'onClose');
// Create the view here now that this.collection exists
this.paginationbar = new PaginationBarView({collection: this.collection});
// ...
}
});
return AttendeesView;https://stackoverflow.com/questions/12035599
复制相似问题