3

状態に応じて API 名前空間を変更する必要があるアプリケーションがあります。ポイントを説明するために、いくつかの API エンドポイントを次に示します。

/groups     (lists all groups)
/foo/users  (lists all users in group foo)
/bar/users  (lists all users in group bar)

ルートに移動しfoo、ユーザーのリンクをクリックします。ユーザーの名前空間を動的に変更するにはどうすればよいですか?

更新 ここにいくつかのコードがあります。私はまだ Ember を理解している途中で、私の JS の知識も少し不安定です。

サブクラス化した ember-data RESTAdapter を使用します。最も重要なことに、私はこれを持っています:

App.RESTAdapter.reopen({
  url: "http://127.0.0.1:5001"
});

これは非常にうまく機能するので、次をコントローラーに入れることを考えました

App.GroupRoute = Em.Route.extend({
  setupController: function(controller) {
    App.RESTAdapter.reopen({url:"http://127.0.0.1:5000", namespace: 'blah'});
    controller.set('model', App.User.find());
  }
});

しかし、それは違いはありません。私の理解では、コントローラーの初期化時に名前空間を変更するのが最も理にかなっています (その段階で、名前空間がどうあるべきかは既にわかっているため) が、それを実現する方法がわかりません

更新 2

次のコードで動作させることができました。それが最善の方法ですか?

var id = window.App.__container__.lookup('controller:group').get('id');
App.RESTAdapter.prototype.namespace = id;`` 
4

0 に答える 0