Im對渲染函數有問題。該函數將數組作爲參數並返回集合的新模型。但它只渲染一次。我點擊運行它,集合本身聽取「更改」。問題是收集沒有得到新的項目。骨幹。渲染/重置已過濾的集合
我認爲它的復位功能就是問題所在。但我不知道如何以另一種方式做到這一點。基本上我只是想刪除所有以前的模型,並設置新的。我會怎麼做?
謝謝!
filter: function(f) {
var filter = this.collection.filter(function(o){
var accept = false;
$(f).each(function(i,val){
if(_.indexOf(o.get('tags'), val) >-1){
accept = true;
}
})
return accept;
});
this.collection.reset(filter);
new PeopleView({
el: this.$('.list'),
collection: this.collection
});
},
PeopleView渲染:
PeopleView = Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
this.$el.html('');
this.collection.each(this.renderPerson, this);
this.listenTo(this.collection,'change',this.render);
},
renderPerson: function (person) {
this.$el.append(new PersonView({
tagName: 'li',
id:'p_'+person.get('id'),
model: person
}).el);
},
});
我也試圖用「設置「而不是」重置「。也不起作用。 this.collection.set(過濾器); – user3122094
我沒有看到這裏定義的'render'方法。 – Mathletics
對不起,如果不清楚。但是「Peopleview」呈現自己。只需將該集合作爲參數/選項。 – user3122094