1

私はember jsがまったく初めてです。私は ember の最後の rc 2 バージョンである ember-data.js 12 リビジョンをダウンロードし、マニュアルを見て、サーバーへの GET リクエストを確認できるように、このコードをコピー アンド ペーストしました。

App = Ember.Application.create();

App.Router.map(function() {
... some resources...
});

App.Store = DS.Store.extend({
    revision: 12 // Default is the REST Adapter 
});

App.Person = DS.Model.extend({
    firstName: DS.attr('string'),
    lastName: DS.attr('string'),
    birthday: DS.attr('date'),

    fullName: function() {
            return this.get('firstName') + ' ' + this.get('lastName');
    }.property('firstName', 'lastName')
});

var person = App.Person.find(1);

そして、次のエラーが発生します。

キャッチされないエラー: アサーションに失敗しました: アプリケーションに「ストア」プロパティが定義されていません。モデル クラスで 'find' を呼び出そうとすると失敗します。「YourAppName.Store = DS.Store.extend()」のように指定してください

しかし、私が理解しているように、Store プロパティを定義しました。マニュアル全体を読んでいないため、何かを見逃しているのかもしれませんが、正直なところ、何が問題なのかわかりません。このコードの後に​​取得する/post/1/と、サーバーへのリクエストが表示されます。これは驚くべきことですが、まだこのエラーに苦労しています

4

1 に答える 1

3

これは、ember アプリケーションが非同期で初期化されるために発生しています。一般に、js がロードされているときにクラスを定義するだけで、実行可能なコードはフック/コールバックに属します。ほとんどの場合、ルートのモデル フックからモデル find() を使用しますが、本当にすぐにこのようなことを行う必要がある場合は、次のようにすることができます。

App.then(function() {
  console.log('App has been initialized...');
  var person = App.Person.find(1);
});

このアプローチを試してみたい場合は、開始スクリーンキャストに基づいてember-data フィクスチャ アダプターを使用する方法を示すこの jsfiddleを試してください。App.then()

于 2013-04-03T23:55:57.220 に答える