0

Ember-Data と RESTAdapter の最新リビジョンを使用して、次のことを行う方法はありますか?

呼び出されたリソースと、正しい JSON を返すことによってApp応答する API があります (などを使用)。/apps{ apps: [...] }

これはサーバー上の静的 json から提供されるため、/apps/:app_id. 代わりに、フェッチされたアプリのうち 1 つのアプリのみを使用する場合でも、 RESTAdapterが常に読み込まれているとよいでしょう。/apps

これを実現するには、独自のアダプタを作成する必要がありますか? はいの場合、「フックイン」するのに適したポイントは何ですか?

4

2 に答える 2

1

app model があるとすると、アプリケーションのロード時App.Appに呼び出すだけで十分です。App.App.find()これにより、 への AJAX 呼び出しが行われ/appsます。結果を変数にキャッシュしない場合でも、返されたレコードがデータ ストアに取り込まれます。を呼び出すたびにApp.App.find(id)、Ember Data はストアをチェックし、レコードがあればそれを返します。レコードがない場合は を呼び出そうとします/apps/:idが、アプリケーションが静的コレクションのみを使用するように設計されている場合、これは発生しないはずです。

電話をかけることができる場所がいくつかありApp.App.find()ます。私はおそらくそれを入れますApp.ready

App = Ember.Application.create({
  ready: function() {
    // pre-load apps
    App.App.find();
  }
});

App.App = DS.Model.extend({
  //...
});
于 2013-03-27T17:35:58.467 に答える
0

少しハッキーに見えますが (おそらくそうです) DS.Adapter:find()、.

私の場合、への呼び出しをブロックするために、次のよう/app/:app_idに書きました。

find: function(store, type, id) {
    // Terminate calls for single app
    if (type === App.App) {
        // instead, load all apps and drop this request
        App.App.find();
        return;
    }
    // or continue as usual
    this._super(store, type, id);
 }

これは、embedded: 'always' レコードの階層があり、Ember が中間レベルをロードする必要があると判断した場合にも機能します。このようなリクエストをドロップするときは、必ず親をロードしてください!

于 2013-04-02T15:44:48.427 に答える