在骨干网中,我似乎必须通过model.get('att_name')
我想让他们按照我在对象中获得任何公共字段的方式:model.att_name
有人可以想办法解决这个问题吗?
例如:在python世界中,我会覆盖模型上的getattr:
def getattr(self, att):
return self.get(att)
哦,我正在使用CoffeeScript
答案 0 :(得分:18)
您使用get()
和set()
或defaults
获取/设置的模型属性存储在instance.attributes
属性中。
此外,这些属性将传递给sync()
以及toJSON()
并从fetch()
返回。因此,当您save()
,instance.attributes
等时,只会传递instance.foo
中存储的内容。
当然,在您的对象上使用fetch()
这样的普通属性时,没有什么可以阻止您。如果您希望将这些属性视为其他属性并将其传递给save()
和parse()
,则可以在模型上提供自定义{{1}},默认情况下不执行任何操作。也就是说,如果你真的认为绝对必要,你应该这样做,只要符合Backbone惯例。
答案 1 :(得分:4)
可在Model.attributes
访问这些属性。您可以直接从中进行阅读,但请使用set
进行更改。您还可以从Model.toJSON()
获取所有属性的表示(注意: toJSON()
实际上不返回JSON,而是返回javascript对象。)
推荐的方法是使用toJSON()
进行模板,序列化等。
答案 2 :(得分:1)
真的没有这个。您可以使用model.attributes.att_name
,但这可能不是您想要的。
JavaScript没有(至少在所有浏览器中都没有)重定向属性访问的能力。