ember.js - Ember CLI/浏览器刷新/生产/404

标签 ember.js ember-cli

我使用 Ember CLI 0.1.15 和 emberjs 开发了我的 web 应用程序。 1.8.1

我使用以下命令构建了应用程序: ember build --environment production ,然后我从项目的 dist 文件夹下生成的文件中创建了一个 WAR,然后将 WAR 放到我的 tomcat 的 webapps 文件夹中。

所以,当我打开应用程序时:http://mytomcat/myapp/ ...一切顺利,我看到了我的登录屏幕,我登录了,并在我的应用程序中导航,一切都很好。我也可以按后退/前进按钮,并且 ember 可以很好地处理过渡。

但是当我点击浏览器上的刷新按钮时——浏览器的地址栏显示 http://mytomcat/myapp/inventory/在那一刻——我收到了来自 tomcat 的 404 回复。

然后我想出了为什么会这样:刷新按钮向 tomcat 发送请求,请求路径/myapp/myinventory/……当然路径/myinventory 在服务器上不存在。我们在浏览器上看到的所有路由——除了基本 URL,http://mytomcat/myapp/ -- 在客户端生成。

所以,我的问题是:处理这种情况的正确方法是什么(在 ember 中)?我需要刷新按钮才能正常工作。有什么办法让 ember 拦截刷新按钮的点击事件?

我猜这个问题与此有关:https://github.com/stefanpenner/ember-app-kit/issues/486 ,但它没有我需要的答案。

提前致谢,
拉卡

- - 更新 - -

可能相关:http://eviltrout.com/2014/04/10/the-refresh-test.html

最佳答案

  • config/environment.js文件,有一个名为 locationType 的属性.将其值设置为 hash
  • 从您的 /dist 手动移动文件文件夹既费时又烦人。相反,您可以指定 output-path您的属性(property).ember-cli使用您尝试将文件移动到的 webapps 中的位置。另一个选项是将此选项指定为 ember serverember build
  • 关于ember.js - Ember CLI/浏览器刷新/生产/404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617907/

    相关文章:

    symfony - 如何使用 JMS Serializer 和 Symfony2 实现模型侧加载

    javascript - 根据条件延长 Ember 等级

    javascript - 基于 Promise 的属性 Ember

    ember.js - 如何在 Ember 中为自定义构建环境指定压缩

    ember.js - 无法使用 ember-data 保存/更新记录

    dom - 哪个 ember.js 组件负责将模板插入到 DOM 中?

    dynamic - Router如何处理动态内容?

    javascript - Ember 数据 : model and hasMany submodels not persisting

    ember-cli - 在 ember-cli 插件中共享公共(public)树

    ember.js - 如何使用 Ember CLI 在两个组件之间共享模板?