我有一个应用程序需要根据状态更改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;``