私は peepcode.com で Ember.js のプレイバイプレイを購入し、提供されたビデオに従いました。
そこで、Rails でモデルとシリアライザーとコントローラーをセットアップしました。
このようにURLを入力すると。
http://localhost:3000/actors/wycats
期待どおりにレンダリングされた JSON 応答。(おそらく、Ember-data は JSON 形式を期待しています..そうですか?)
{
"actor": {
"id": 1,
"blog": "http://www.yehudakatz.com",
"company": "Tilde, Inc.",
"email": "wycats@gmail.com",
"gravatar_id": "428167a3ec72235ba971162924492609",
"location": "San Francisco",
"login": "wycats",
"name": "Yehuda Katz",
"actor_type": "User"
}
}
そこで、ember.js で Store と Actor Model をセットアップしました。
GithubScore.Store = DS.Store.extend({
revision: 11,
adapter: "DS.RESTAdapter"
});
GithubScore.Actor = DS.Model.extend({
login: DS.attr('string'),
name: DS.attr('string'),
gravatarId: DS.attr('string'),
location: DS.attr('string'),
blog: DS.attr('string')
});
Ember アプリを起動しましたが、エラーは発生しませんでした。
しかし、コンソールを使用してモデルを取得しようとしたとき (ID が 1 のモデルが Rails DB に既に保存されていました)
GithubScore.Actor.find(1)
クラスを返します。エラーは発生しませんでしたが、その属性を取得しようとすると。モデルのステータスは「isLoaded」ですが、null のみを返します。
GithubScore.Actor.find(1).get('isLoaded')
=> true
GithubScore.Actor.find(1).get('blog')
=> null
そして、GithubScore.Actor.find(1).get('isLoaded') を最初に繰り返し呼び出すと、false のみが返されることがわかりましたが、属性 'isLoaded' を取得しようとすると、すぐに true に変更されます。
GithubScore.Actor.find(1).get('isLoaded')
=> false (for many times)
GithubScore.Actor.find(1).get('blog')
=> null
GithubScore.Actor.find(1).get('isLoaded')
=> true (immediately changed)
そして、ビデオのように .toJSON() メソッドをモデル化しようとすると。エラーがスローされます。
GithubScore.Actor.find(1).toJSON()
=> TypeError: Object <GithubScore.Actor:ember272:1> has no method 'toJSON'
私が興味を持っていることの 1 つは、GithubScore.Store オブジェクトが DS.Store から拡張されているということです。
DS.store が既に持っている find(type, id) メソッドはありません。
何が問題なのかわかりません。手伝ってくれませんか?
読んでくれてありがとう!