2012-03-08 113 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')