如何在Ember.js中指定动态根URL?

时间:2014-01-06 19:40:36

标签: javascript ember.js web-applications url-routing

Ember允许在路由器上指定根URL:http://emberjs.com/guides/routing/#toc_specifying-a-root-url

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

有没有办法指定动态网址:/:region/:locale/

rootURL赋值似乎只接受文字字符串。

资产(包括Ember)正在从/assets/等公共目录加载。

3 个答案:

答案 0 :(得分:7)

您可以在rootURL方法中动态设置Router.init,例如

App.Router.reopen({
  init: function() {
     // set rootURL using regex to extract appropriate
     // rootURL based on current window location
     this.set('rootURL', 
       window.location.pathname.match('/[^/\]*/[^/\]*/')[0]);
     this._super();
});

答案 1 :(得分:1)

你必须声明你是根URL'/',然后在其下创建其余的路径/资源。

答案 2 :(得分:1)

我能够在实例初始化程序中完成此操作 - 我使用ember-cli-meta-options将根URL设置为元环境变量,然后将其应用于路由器

export default {
  name: "router",

  initialize: function( instance ) {

    var router = instance.container.lookup('router:main');
    var options = instance.container.lookup('session:env');
    router.rootURL = options['root'];

  }
};