Ember CLI,locationType:'hash',并为所有URL提供index.html

时间:2015-03-17 19:41:54

标签: ember.js ember-cli

我有一个特殊的用例,我想在Ember中使用URL哈希进行路由,并且我希望URL的路径部分也有点动态。

例如:

localhost:4200/#/properties/edit

与此完全相同:

localhost:4200/about/#/properties/edit

或者这个:

localhost:4200/products/widgets/model-5000/#/properties/edit

如果在上面这些不同的示例网址之间导航会产生整页刷新,那将是100%可接受的,尽管URL中的任何哈希更改都会将其保留在“单页”上。

我希望所有这些URL都指向app/index.html文件,而Ember CLI则指向“忽略”路径,但我无法弄清楚如何配置Ember CLI以便在服务时执行此操作应用程序。例如,上面的/about方案给出了错误Cannot GET /about

使用普通的Ember CLI是否可以实现这一点,或者我需要转向ember-cli-rails这样的东西才能在开发中获得更灵活的路由?我认为配置它在生产中正常工作会相对简单,但我也需要一些适用于开发的东西。

2 个答案:

答案 0 :(得分:0)

是的,您可以使用通配符:http://emberjs.com/guides/routing/defining-your-routes/#toc_wildcard-globbing-routes

从'ember'导入Ember; 从'./config/environment'导入配置;

var Router = Ember.Router.extend({   location:config.locationType });

Router.map(function() {
  this.resource('index', { path: "/*wildcard" }, function() {
    this.route("properties", function() {
      this.route("edit");
    });
  });
});

export default Router;

答案 1 :(得分:0)

解决方案是创建一个Ember CLI插件:ember-cli-hash-anywhere

安装完成后,Web服务器会忽略URL的路径部分,并且每次都会提供index.html