状態に応じて 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;``