如何在没有.get的情况下获得骨干模型属性

时间:2012-03-08 16:55:33

标签: javascript backbone.js coffeescript

在骨干网中,我似乎必须通过model.get('att_name')

获取模型属性

我想让他们按照我在对象中获得任何公共字段的方式:model.att_name

有人可以想办法解决这个问题吗?

例如:在python世界中,我会覆盖模型上的getattr:

def getattr(self, att):
   return self.get(att)

哦,我正在使用CoffeeScript

3 个答案:

答案 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没有(至少在所有浏览器中都没有)重定向属性访问的能力。