collections - Distruggere un modello backbone in una raccolta in un solo passaggio?




backbone.js (3)

Sono questi due passaggi obbligatori per eliminare un modello?

var model = collection.get(id);
model.destroy();
collection.remove(model);

Non c'è un modo per distruggere un modello quando viene rimosso dalla sua collezione?


Answers

Chiamando collection.reset () senza passare alcun modello come argomento si svuota l'intera collezione.

http://backbonejs.org/#Collection-reset


Model.bind("remove", function() {
  this.destroy();
});
...
var model = new Model();
...
collection.remove(model);

La rimozione di un modello da una raccolta attiva l'evento "remove" .

Quindi, se lo desideri, puoi ottenere modelli per legarli e distruggerti.


Oltre alle altre risposte, c'è un'altra ragione per cui il metodo dovrebbe accettare un Object , che è un predicato. Considera il seguente esempio:

class Person {
    public String name;
    // override equals()
}
class Employee extends Person {
    public String company;
    // override equals()
}
class Developer extends Employee {
    public int yearsOfExperience;
    // override equals()
}

class Test {
    public static void main(String[] args) {
        Collection<? extends Person> people = new ArrayList<Employee>();
        // ...

        // to remove the first employee with a specific name:
        people.remove(new Person(someName1));

        // to remove the first developer that matches some criteria:
        people.remove(new Developer(someName2, someCompany, 10));

        // to remove the first employee who is either
        // a developer or an employee of someCompany:
        people.remove(new Object() {
            public boolean equals(Object employee) {
                return employee instanceof Developer
                    || ((Employee) employee).company.equals(someCompany);
        }});
    }
}

Il punto è che l'oggetto passato al metodo remove è responsabile della definizione del metodo equals . Costruire predicati diventa molto semplice in questo modo.





collections model backbone.js