0

来自主干文档

getmodel.get(attribute) 
Get the current value of an attribute from the model. For example: note.get("title")

我将一些带有每个国家/地区名称的数据植入到 Rails 应用程序中

Country.create!(name: "Brazil")
Country.create!(name: "France")
Country.create!(name: "Germany")
Country.create!(name: "Spain")

在控制台中,我创建了一个新集合并获取了数据

countries.fetch();
Object
XHR finished loading: "http://localhost:3000/countries". 

检查了长度。等于我创建的四个国家。

countries.length
4

使用下划线的 shuffle 方法随机选择一个。

c = countries.shuffle()[0]

对象有名字

  Backbone.Model
_changes: Array[2]
_currentAttributes: Object
_events: Object
_hasComputed: false
_previousAttributes: Object
attributes: Object
  country: Object
   created_at: "2013-01-07T06:09:43Z"
   id: 2
   name: "France"
   updated_at: "2013-01-07T06:09:43Z"
__proto__: Object
__proto__: Object

尝试了几种不同的方式从对象中获取名称属性,都没有成功

c.get('name')
undefined
c.get("name");
undefined
c.get("name")
undefined

谁能想到我可能做错了什么?

我发现不寻常的一件事是有一个“国家”属性包装了其他属性

attributes: Object
      country: Object
       created_at: "2013-01-07T06:09:43Z"
       id: 2
       name: "France"
       updated_at: "2013-01-07T06:09:43Z"

我不确定为什么“国家”要包装其他数据。是因为我使用 Country 模型创建了种子数据吗?

Country.create!(name: "Brazil")

无论如何,obj.get('country') ​​返回未定义

c = countries.shuffle()[0]
k = c.get('country')
Object
 created_at: "2013-01-07T06:09:43Z"
 id: 3
 name: "Germany"
 updated_at: "2013-01-07T06:09:43Z"
 __proto__: Object

但在那之后我不能得到名字(即在我得到国家之后)

k = c.get('country')
Object
k.get('name')
undefined

有没有办法删除国家/地区包装器并能够获取它创建的属性?

4

1 回答 1

0

覆盖model.parse以提取country元素。parse从获取的数据填充模型之前的主干调用:

var Country = Backbone.Model.extend({
  parse: function(attributes) {
    return attributes.country;
  }
});
于 2013-01-07T07:57:41.890 回答