2016-05-22 13 views
0

Gibt es eine Möglichkeit, die 2 verschiedenen Instanzen eines Backbone-Modells zu vergleichen?Vergleich von 2 gleichen Backbone-Modellen (d. H.) 2 verschiedenen Instanzen eines Backbone-Modells

+0

Sie möchten testen, ob zwei Instanzen die gleichen Attribute haben oder ob Ihre beiden Referenzen auf das gleiche Objekt zeigen? Für die ehemalige '_.isEqual (m1.attributes, m2.attributes)' oder, wenn Sie die verglichenen Attribute begrenzen möchten, '_.isEqual (m1.pick (" attr1 "," attr2 "), m2.pick ("attr1", "attr2")). –

+0

Was genau möchten Sie vergleichen? Alles? Attribute? Prototyp? Es ist nicht klar, was du willst. –

+0

Ich möchte den Wert des Attributs nicht manuell vergleichen, indem ich den Namen des Attributs übergebe. Stattdessen, wenn ich die Modelle gebe, sollte es selbst wissen, dass dies das Attribut ist, und dies ist der Wert und vergleichen Sie dann die Werte, um sie gleich oder nicht zu kennen –

Antwort

1

kommentiert:

Ich möchte nicht manuell den Attributwert vergleichen, indem Sie den Namen des Attributs übergeben. Stattdessen, wenn ich die Modelle geben soll selbst wissen, dass dies das Attribut ist, und dies ist der Wert und dann die Werte zu vergleichen, um zu wissen, dass es gleich oder nicht

Es gibt keine in Verfahren integriert ist, die das Modell auf ein anderes Modell vergleicht . Aber Sie können eine Methode auf dem Backbone.Model Prototyp umzusetzen, dies zu tun:

Backbone.Model.prototype.equalTo = function(other) { 
    return _.isEqual(this.attributes, other.attributes); 
}; 

Es Underscore's isEqual() verwendet, die vergleicht, ob zwei Objekte gleich sind. isEqual() bekommen beide internal Backbone data objects attributes übergeben.

können Sie dann tun:

if (m1.equalTo(m2)) { 
    console.log("equal"); 
} 

Wenn Sie nicht Backbone.Model ändern möchten, können Sie davon erstrecken kann und implementieren equalTo() dort.

Verwandte Themen