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". 

長さを確認しました。私が作成した4つの国に等しい。

countries.length
4

アンダースコアのシャッフル方法を使用してランダムなものを選択しました。

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

いくつかの異なる方法でオブジェクトからname属性を取得しようとしましたが、すべて成功しませんでした

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

誰かが私が間違っているかもしれないことを考えることができますか?

私が珍しいと思うことの1つは、他の属性をラップする「国」属性があることです。

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 に答える