如何在控制器的App.Router中获取rootURL以在JSON请求中使用?

如果我这样指定rootURL:

App.Router.reopen({
  rootURL: '/site1/'
});


我希望能够做这样的事情:

FooController = Ember.ObjectController.extend({
   needs: ["application"],
   actions: {
     examine: function() {
         var rootURL = this.get('controllers.application.router.rootURL');
         $.getJSON(rootURL + "/examine/" + id).then(function(response) {
         // do stuff with response
         });
      }
    }
});

最佳答案

路由器被注入到所有路由上,您可以将该动作向上移动到该路由上,并从该路由中获取路由器。

FooRoute = Ember.Route.extend({
   actions: {
     examine: function() {
         var rootURL = this.get('router.rootURL');
         $.getJSON(rootURL + "/examine/" + id).then(function(response) {
         // do stuff with response
         });
      }
    }
});


或者,您可以仅在路由设置控制器时将属性添加到控制器。

FooRoute = Ember.Route.extend({
  setupController: function(controller,model){
    this._super(controller, model);
    controller.set('rootURL', this.router.rootURL);
  }
});


示例:http://emberjs.jsbin.com/tomuhe/1/edit

10-05 18:09