问题标签 [ember.js-2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
243 浏览

ember.js - 如何在 EmberJS 中使用组件干燥路由操作

(EmberJS 2.14)

我想拥有带有 ember 的 DRY 应用程序,但是,似乎不可能使用路由操作。当我尝试使用触发操作的按钮组件时,它失败了:

新的.js:

新的.hbs

错误 :

我对删除操作和更新操作有同样的问题。我不能让自己在需要它的每条路线和视图中拥有相同的代码和模板行。

0 投票
2 回答
607 浏览

node.js - Ember 服务器:“端口 4200 已在使用中”,当 4200 上没有进程运行时

运行我的 ember 应用程序时,ember serve -e local我得到:

端口 4200 已在使用中。

这很奇怪,因为 4200 上没有运行任何应用程序。我尝试使用http-server在 4200 上打开一个虚拟 HTTP 服务器,它工作得很好。当我通过命令行标志指定端口时,它也可以工作ember serve --port 4200

我尝试过的一些事情:

  • 重新启动了我的电脑。
  • 删除了node_modules.
  • 删除 embertmp目录。
  • 禁用了我的防火墙。
  • 尝试使用禁用的 wi-fi。

有什么想法吗?


我正在使用以下版本的 masOS High Sierra 10.13.6 上运行:

  • 节点:8.11.3
  • 余烬-cli:2.18.2
  • npm:5.6.0 (也尝试使用 6.3.0)

了解也很有用:

  • 我的计算机上运行着其他 ember 应用程序就好了。
  • 我最近才开始遇到这个问题。
  • 过去,每当打开应用程序时,macOS 都会不断询问我是否授权传入流量,但现在它不再询问我了。
0 投票
2 回答
712 浏览

javascript - 使用 ember-intl 异步加载翻译

我正在尝试实现翻译的异步获取。publicOnly我按照文档的说法设置了true

跳过设置locales密钥的步骤,因为翻译存储在/translations文件夹中。

接下来,我应该修改beforeModel钩子以异步获取翻译,这就是文档非常模糊的地方:

这些行应该如何工作:

translations.json在运行时,我在文件夹中的任何地方都没有文件dist。我dist/translations/en-us.json只有我唯一的翻译,不知道如何使它工作。

服务 API缺少addTranslations方法文档。

将不胜感激任何帮助。

0 投票
1 回答
461 浏览

javascript - Ember 发生错误:断言失败:在没有有效事件名称的情况下调用

我的 ember 2.18 应用程序中有一个控制器,我想让它监听myEventName应用程序某处触发的某些事件,以更改模型属性。

根据此版本的 API 文档,捕获已发出事件的方法如下:

该代码与 ember build dev 可以很好地编译,但在浏览器的 JS 控制台中,我收到以下错误消息:

错误:断言失败:在没有有效事件名称的情况下调用 error.js:40

我尝试重命名事件,但找不到事件名称错误的原因。我还尝试为该on方法设置三个参数,但它仍然与事件名称有关。我错过了什么?

编辑:
我做了一个 Ember twiddle,显示事件的范围是组件。我想从任何地方抓住它们;就像从服务触发事件并在路由中捕获它一样。

https://ember-twiddle.com/ce22cc0a542e8e0997a1ad57a4a9688c?fullScreen=true

0 投票
1 回答
175 浏览

ember.js - 升级 Ember 时出现未知的全局错误

将 Ember 2.11 升级到 2.18 时,我遇到了很多未知的全局错误:

  • Ember.Inflector

全球未知:Ember.Inflector 位置:app\routes\base-mt.js 第 17 行

  • Ember.testing

全球未知:Ember.testing 位置:app\routes\base.js 第 30 行

  • Ember.MODEL_FACTORY_INJECTIONS

全球未知:Ember.MODEL_FACTORY_INJECTIONS 位置:app\app.js 位于第 10 行

Ember.生产

全球未知:Ember.production 位置:app\router.js 在第 1937 行

  • Ember.onerror

Unknown Global Global:Ember.onerror 位置:app\application\route.js 在第 48 行

  • Ember.Logger

全球未知:Ember.Logger 位置:app\application\route.js 第 167 行

  • Ember.Handlebars

全球未知:Ember.Handlebars 位置:app\helpers\add-new-line.js 在第 5 行

  • Ember.String

全球未知:Ember.String 位置:app\services\jsonschema-validation.js 第 14 行

0 投票
1 回答
72 浏览

ember.js - Ember 的 Promise 重试包装器

我有一段 Ember 代码片段,它调用 API 端点并在响应到达时填充数组(还有其他项目独立于 API 调用添加到数组中。为简单起见,我省略了不相关的代码):

这段代码工作正常,并完成了它打算做的事情。我想创建一个重试器:this.get("store").find例如,如果由于底层 AJAX 调用响应 401 而失败,我会再试几次。基于这个答案

https://stackoverflow.com/a/51332115/1518685

我设计了以下包装器:

我执行以下方式:

我模拟了错误请求(通过设置错误qParams变量)并观察到多个 AJAX 请求失败,最终在重试器之后的 catch() 方法中捕获了永久失败。

但是,当调用成功时,retrier 承诺永远不会解决,我不知道为什么?

任何帮助将不胜感激。

0 投票
2 回答
355 浏览

ember.js - 如何在不渲染的情况下重定向 Ember 页面?

我们有一个 Ember UI,我们将其移植到单点登录提供商。这是在服务器端功能标志后面,这样,当标志打开时,用户将被重定向到 SSO 提供程序登录门户,而当标志关闭时,用户仍可以通过 Ember 路由登录。

我通过在 Ember RoutebeforeModel()调用中调用服务器端点来实现此功能。但是,由于这是一个异步调用,因此页面会在请求返回、处理结果和重定向浏览器之前继续呈现。因此,用户可以在被重定向到 SSO 门户之前简要地看到旧的登录表单。我希望用户在显示 SSO 门户之前只看到一个空白的浏览器窗口。

有没有办法让 RoutebeforeModel()方法阻止服务器调用的结果?我尝试在super.beforeModel()处理了 ajax 回调之后才显式调用,但 Ember 似乎并没有等待它完成,然后再继续渲染。

(大致就是这样做的;有一些全局语法糖辅助方法可以抽象Ember.$.ajax调用。)

模型加载是否会阻止渲染直到加载?我犹豫要不要尝试,因为登录页面没有定义模型,所以需要更多的新代码。

该应用程序的结构有些奇怪。登录页面实际上是 Ember v2.4 上的一个单独应用程序,因此我可以在应用程序代码中的任何位置挂钩,而不必担心破坏实际应用程序。我也尝试过连接到应用程序,并且只Ember.Application.create()从服务器调用承诺解析内部调用该方法。但是,加载登录页面组件(通过 RequireJS)似乎会触发它们的渲染。