使用Backbone.js我知道強烈建議使用set方法來設置模型屬性,而不是直接修改attributes internal hash。backbone.js直接設置模型內部屬性散列
但是,除了不自動觸發「更改」事件,還有什麼其他缺點或「副作用」直接修改內部哈希?
我面臨的問題是,儘管set方法需要一個對象字面量,但我需要使用在運行時確定的變量來分配左側。謝謝。
myModel.set({
myProperty : myValue; //myProperty is a variable, so this is invalid syntax
})
//vs
myModel.attributes[myProperty] = myValue; //myProperty is a variable that can be evaluated
我認爲你的解決方案非常出色。這個功能應該被合併到更新的Backbone版本中!也感謝您指出註釋的源代碼;你是對的,我應該首先看看它。 – fortuneRice
不錯!我已經寫了十幾遍這個代碼,從來沒有想過讓它成爲一種方法。 :)順便說一句:沒有必要使用_.extend這個。 'Backbone.Model.prototype.setByName = function(...){...}'做同樣的事情......在功能上是一樣的。只是一個不同的方式來做到這一點。 –
@德里克貝利:滑稽......我以爲'_.extend'有一些額外的智慧來擴展原型......不。它真的是用一系列變化來擴展任何對象。沒有什麼瘋狂的。改變我的答案承認這一點。謝謝。 –