2012-03-08 111 views
0

我有一個骨幹視圖,可以將模型渲染到屏幕上。當模型(IsNew)我不得不從this.model.attributes.distance得到我的距離值,否則這out.model.distance 爲什麼呢?骨幹模型新vs未保存

所以在代碼某處我有這樣的:

if(!this.model.distance) 
    distance = this.model.attributes.distance 
else 
    distance = this.model.distance; 

這在我看來是一個醜陋的解決方案,有可能是這樣做的更好的方式。 任何線索?

回答

0

您可能會錯誤地設置您的值。

要設置值:this.model.set({name: "value"})

爲了得到一個值:this.model.get("value")

set方法採用JSON文件作爲參數,並允許您指定多個屬性分配:

this.model.set({foo: "bar", baz: "quux"})

get方法只允許您指定一個值來獲取名稱。

通過直接進入model.attributes,您可以規避Backbone爲模型提供的所有邏輯和流程,包括事件通知和驗證。建議您使用setget方法,而不是直接訪問屬性。

+0

這是正確的答案。我必須弄清楚如何更新保存例程中的字段,而不觸發從模型 – 2012-03-08 22:07:35

+0

更新而不觸發更改的更改,可以像這樣完成this.model.set({name:'newValue'},{silent:true }); (第二個哈希包含選項,其中一個可能的選項是無聲的)更多信息請參閱http://documentcloud.github.com/backbone/#Model-set – Sander 2012-03-08 22:40:32

0
var distance = this.model.get('distance')