Ich habe eine Sammlung von Modellen mit booleschem Wert interviewed
und ich möchte sie so filtern, dass meine Ansicht entweder Modelle mit dieser Eigenschaft auf true
oder Modelle mit dieser Eigenschaft auf false
festgelegt anzeigen würde. In meiner Sammlung habe ich die folgenden Methoden:Filtern der Sammlung funktioniert nicht
var ResumeCollection = Backbone.Collection.extend({
filterActive: function() {
var active = this.where({interviewed: false});
return active;
},
filterInterviewed: function() {
var interviewed = this.where({interviewed: true});
return interviewed;
}
});
und meiner Ansicht nach habe ich folgendes:
var ResumeList = Backbone.View.extend({
events: {
'click #active': 'showActive',
'click #interviewed': 'showInterviewed'
},
initialize: function() {
this.collection = new ResumeCollection();
},
render: function() {
var self = this;
this.$el.html($('#filter'));
_.each(this.collection.toArray(), function (cv) {
self.$el.append((new ResumeView({model: cv})).render().$el);
});
},
showActive: function() {
this.collection.filterActive();
this.render();
},
showInterviewed: function() {
this.collection.filterInterviewed();
this.render();
}
});
Aber jedes Mal, wenn ich #active
oder #interviewed
Schaltflächen klicken, es passiert nichts und die Modelle mit den erforderlichen Eigenschaften werden nicht gerendert. Ich habe bereits versucht, dies mit reset
Methode zu verwalten oder eine neue Sammlung Instanz mit erforderlichen Modellen, aber das ist keine Lösung, denn wenn ich die erste Sammlung erfolgreich filtern, gibt es mir eine neue Sammlung mit den Modellen, die ich brauche (z. B. Modelle wo interviewed: true
), und ich kann es nicht mehr filtern - es gibt nur eine leere Sammlung zurück. Ich kann einfach nicht bekommen, wie ich diese eine Sammlung so filtern kann, wie ich brauche.
Sie müssen die Modelle in Sammlungen filtern und die gefilterten Modelle zurückgeben. In Ihrem Fall ist "interviewed" nur ein Sammelparameter. –
Ich habe 'interviewed' Parameter als Standard in meinem Modell – AlexNikolaev94