2016-05-22 6 views
0

同じバックボーンモデルの2つの異なるインスタンスを比較する方法はありますか?2つの同じバックボーンモデルの比較(つまり、バックボーンモデルの2つの異なるインスタンス)

+0

2つのインスタンスが同じ属性を持っているかどうか、または2つの参照が同じオブジェクトを指しているかどうかをテストしますか?前者の '_.isEqual(m1.attributes、m2.attributes)'または比較属性を制限したい場合は、 '_.isEqual(m1.pick(" attr1 "、" attr2 ")、m2.pick( "attr1"、 "attr2")) '。 –

+0

正確に何を比較したいですか?すべて?属性?プロトタイプ?あなたが望むものははっきりしない。 –

+0

私は属性の名前を渡すことによって属性の値を手動で比較したくありません。代わりに、私はモデルを与えるときに、これが属性であることを知るべきであり、これが値であり、次に値を比較して等しいかどうかを知る –

答えて

1

あなたのコメント:

を私は属性の名前を渡すことによって、手動で属性の値を比較する必要はありません。私はモデルを与えたときに代わりに別のモデルへのモデルを比較する方法であり建て何だ

それが等しいかどうかを知らないために値を比較し、それは、この属性であることを自分自身で知っておくべき、これは値であり、 。しかし、あなたはこれを行うにはBackbone.Modelプロトタイプのメソッドを実装できます。

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

それは2つのオブジェクトが等しいかどうかを比較しUnderscore's isEqual()を利用しています。 isEqual()ゲットは両方ともinternal Backbone data objects attributesとなります。

その後、行うことができます。

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

あなたがBackbone.Modelを変更したくない場合、あなたはそれから延び、そこequalTo()を実装することができます。

関連する問題