【问题标题】:Ember.js - Getting App instance in moduleEmber.js - 在模块中获取 App 实例
【发布时间】:2015-07-03 12:25:38
【问题描述】:

我必须将非 cli 项目移植到 cli。我有一条路线:

App.thisRoute = App.previouslyDefinedRoute.extend({...})

使用 CLI,我已经尝试过:

// routes/thisRoute.js
import App from 'app';

export default App.previouslyDefinedRoute.extend({...})

这给了我这个 Ember Inspector 错误:

Ember Inspector 出错了。

...

错误消息:找不到从app/routes/thisRoute导入的模块app

我也试过了:

// routes/thisRoute.js
import App from 'routes/previouslyDefinedRoute.js';

export default App.previouslyDefinedRoute.extend({...})

两者都不工作。

如何获取我的应用实例?

【问题讨论】:

  • 没有应用实例,ember-cli 使用 ES6 模块,这意味着每个位都与其余部分隔离,需要导入它需要的内容并导出需要用于其他文件的内容。你想在这里做什么?
  • 我有一条路线可以扩展另一条路线的基本功能。所以不是App.route = Ember.Route.extend,而是App.route = PreviousRoute.extend
  • 现在我只是尝试将旧应用程序移植到 CLI 中,并尽可能少地进行更改。我稍后会重构它。

标签: ember.js ember-cli


【解决方案1】:

ember-cli 中没有应用实例,它使用 ES6 模块代替,为了扩展路由,您必须先导入它。

import PreviousRoute from 'yourProjectName/routes/previouslyDefinedRoute';

请注意,不需要文件扩展名。

然后你就可以export default PreviousRoute.extend({});。

您的文件必须始终导出默认函数或命名函数,以便其他文件使用。

【讨论】:

  • 您可以使用相对路径,但我发现导入的绝对路径更易于阅读。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
相关资源
最近更新 更多