2016-05-22 77 views
0

是否有任何方法可以比較同一個骨幹模型的兩個不同實例?比較兩個相同的骨幹模型(即)骨幹模型的兩個不同實例

+0

您想測試兩個實例是否具有相同的屬性,或者您的兩個引用是否指向相同的對象?對於前一個'_.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); 
}; 

它利用Underscore's isEqual()其中比較兩個對象是否相等。 isEqual() get的通過internal Backbone data objects attributes

你可以再做:

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

如果你不想修改Backbone.Model,你可以從它擴展和實現equalTo()那裏。