我有一个主干集合,我想创建一个填充该集合的方法。我发现的是推送方法,但这需要迭代所有项目:
define([
...
], function($, _, Backbone, imagesCollection, imageTemplate, gridView) {
var AppView = Backbone.View.extend({
el: '#container',
template: _.template( imageTemplate ),
events: {
'click #search': 'search'
},
initialize: function() {
this.input = this.$('#search-term');
},
populate: function(data) {
for (var i=0;i<data.length;i++) {
imagesCollection.push(data[i]);
}
//IS THERE ANY WAY TO PREVENT ITERATING OVER ALL THE ITEMS?
},
search: function() {
$.ajax({
type: 'get',
url: myurl,
dataType:'jsonp',
success: function(response){
populate(response);
}
});
}
});
return AppView;
});
还有其他解决办法吗? 我是 Backbone 新手,所以如果您发现任何问题 - 请告诉我。
最佳答案
至少有两种方法可以填充主干集合,而无需在我自己的代码中进行迭代。
方法add(它附加您传入的模型)
populate: function(data) {
imagesCollection.add(data); // old models will be preserved
}
方法重置(用您提供的新模型替换集合中的所有模型)
populate: function(data) {
imagesCollection.reset(data); // new models will erase the old ones
}
参见http://backbonejs.org/#Collection-reset和 http://backbonejs.org/#Collection-add
关于javascript - 填充主干中的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13031802/