我有一个集合实例,然后是一个页面加载的集合视图实例,它从服务器填充该区域的一个区域和酒庄。获取新集合时更新集合视图
这是被称为在我的主页中的一个jQuery就绪功能...
var regionWineriesList = new RegionWineriesList();
var regionWineriesListView = new RegionWineriesListView({collection: regionWineriesList, map: Map.map});
regionWineriesList.fetch({
success: function(response) {
$('.wineries-scroll').prepend(regionWineriesListView.render().el);
}
});
这是伟大的工作。
我也有一个自动完成的视图,点击时,为新的一组数据做一个提取。它在findWineries()函数中。
var RegionsView = Backbone.View.extend({
el: 'body',
initialize: function(options) {
this.region_input = $('input#RegionLocation');
this.winery_input = $('input#WinerySearchHome');
},
events: {
'click input#RegionLocation': 'autoCompleteSetup',
'click .pulldown-arrow': 'autoCompleteSetup'
},
autoCompleteSetup: function() {
var self = this;
this.options = {minLength: 0, source: this.collection.toJSON()};
this.region_input.autocomplete(self.options);
this.region_input.autocomplete('search', '');
this.region_input.autocomplete({
select: function(event, ui) {
self.winery_input.val('Search By Winery Name');
self.findWineries(ui.item.label);
}
});
},
findWineries: function(label) {
var newRegionWineriesList = new RegionWineriesList();
newRegionWineriesList.fetch({
data: {region: label},
reset: true
});
}
});
这也是因为它从服务器获取新数据。
我似乎无法弄清楚如何在检索新数据后更新视图。我试图将集合视图绑定到集合,但没有发生任何事情。
以下是模型,收集和收集视图。我正在离开模型视图。请告知我是否需要,我会编辑。
var RegionWinery = Backbone.Model.extend();
var RegionWineriesList = Backbone.Collection.extend({
model: RegionWinery,
url: '/regions/regions_wineries.json',
parse: function(response){
return response.wineries;
}
});
var RegionWineriesListView = Backbone.View.extend({
className: 'wineries',
initialize: function(options) {
_.bindAll(this, 'render');
this.listenTo(this.collection, 'reset', this.render);
this.map = options.map;
this.render();
},
render: function() {
this.collection.each(function(winery) {
var marker_view = new MapMarkerView({model: winery, map: this.map });
var regionWineriesView = new RegionWineriesView({model: winery, marker_view: marker_view});
this.$el.append(regionWineriesView.render().el);
}, this);
return this;
}
});
感谢您的帮助。我已经在调用自动完成的第二个块中获取。这是正常工作。响应从服务器返回。我的印象是,当集合或模型发生更改时,视图会自动更新,因此我试图将集合视图绑定到集合。 – bradmaxs
因此唯一可以识别的集合是regionWineriesList实例,当我创建新的newRegionWineriesList实例时,它并不知道这个实例? – bradmaxs
再次感谢您的解释。因此,在代码块2中,在获取新数据的地方,我如何更新集合。我能否在不创建新实例的情况下做到这一点?我无法访问我的函数中的'regionWineriesList'。它说它是不确定的。 – bradmaxs