我有一個集合實例,然後是一個頁面加載的集合視圖實例,它從服務器填充該區域的一個區域和酒莊。獲取新集合時更新集合視圖
這是被稱爲在我的主頁中的一個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