问题标签 [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.
ember.js - 如何在 EmberJS 中使用组件干燥路由操作
(EmberJS 2.14)
我想拥有带有 ember 的 DRY 应用程序,但是,似乎不可能使用路由操作。当我尝试使用触发操作的按钮组件时,它失败了:
新的.js:
新的.hbs
错误 :
我对删除操作和更新操作有同样的问题。我不能让自己在需要它的每条路线和视图中拥有相同的代码和模板行。
node.js - Ember 服务器:“端口 4200 已在使用中”,当 4200 上没有进程运行时
运行我的 ember 应用程序时,ember serve -e local
我得到:
端口 4200 已在使用中。
这很奇怪,因为 4200 上没有运行任何应用程序。我尝试使用http-server在 4200 上打开一个虚拟 HTTP 服务器,它工作得很好。当我通过命令行标志指定端口时,它也可以工作ember serve --port 4200
。
我尝试过的一些事情:
- 重新启动了我的电脑。
- 删除了
node_modules
. - 删除 ember
tmp
目录。 - 禁用了我的防火墙。
- 尝试使用禁用的 wi-fi。
有什么想法吗?
我正在使用以下版本的 masOS High Sierra 10.13.6 上运行:
- 节点:8.11.3
- 余烬-cli:2.18.2
- npm:5.6.0 (也尝试使用 6.3.0)
了解也很有用:
- 我的计算机上运行着其他 ember 应用程序就好了。
- 我最近才开始遇到这个问题。
- 过去,每当打开应用程序时,macOS 都会不断询问我是否授权传入流量,但现在它不再询问我了。
javascript - Ember 发生错误:断言失败:在没有有效事件名称的情况下调用
我的 ember 2.18 应用程序中有一个控制器,我想让它监听myEventName
应用程序某处触发的某些事件,以更改模型属性。
根据此版本的 API 文档,捕获已发出事件的方法如下:
该代码与 ember build dev 可以很好地编译,但在浏览器的 JS 控制台中,我收到以下错误消息:
错误:断言失败:在没有有效事件名称的情况下调用 error.js:40
我尝试重命名事件,但找不到事件名称错误的原因。我还尝试为该on
方法设置三个参数,但它仍然与事件名称有关。我错过了什么?
编辑:
我做了一个 Ember twiddle,显示事件的范围是组件。我想从任何地方抓住它们;就像从服务触发事件并在路由中捕获它一样。
https://ember-twiddle.com/ce22cc0a542e8e0997a1ad57a4a9688c?fullScreen=true
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 行
ember.js - Ember 的 Promise 重试包装器
我有一段 Ember 代码片段,它调用 API 端点并在响应到达时填充数组(还有其他项目独立于 API 调用添加到数组中。为简单起见,我省略了不相关的代码):
这段代码工作正常,并完成了它打算做的事情。我想创建一个重试器:this.get("store").find
例如,如果由于底层 AJAX 调用响应 401 而失败,我会再试几次。基于这个答案
https://stackoverflow.com/a/51332115/1518685
我设计了以下包装器:
我执行以下方式:
我模拟了错误请求(通过设置错误qParams
变量)并观察到多个 AJAX 请求失败,最终在重试器之后的 catch() 方法中捕获了永久失败。
但是,当调用成功时,retrier 承诺永远不会解决,我不知道为什么?
任何帮助将不胜感激。
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)似乎会触发它们的渲染。