【问题标题】:Ember-Cli refactoring to use podsEmber-Cli 重构以使用 pod
【发布时间】:2015-02-11 11:31:14
【问题描述】:

我刚刚开始重构我们的 Ember 应用程序以使用 Pod,以便我们的目录/文件结构更易于管理。同时我升级了 Ember-Cli,所以我使用以下配置运行:

Ember      : 1.8.1
Ember Data : 1.0.0-beta.12
Handlebars : 1.3.0
jQuery     : 1.11.2

我已更新 environment.js 以包含以下内容

modulePrefix: 'emberjs',
podModulePrefix: 'emberjs/pods',

我也尝试将其设置为“app/pods”和“pods”,但没有成功。

目录结构如下:

emberjs/
     app/
       controllers - original location, still has some original controllers here for other parts of the system
       pods/
          job/
            parts/
               index/
                  controller.js
                  route.js
                  template.hbs
                edit/
                  controller.js
                  route.js
                  template.hbs

应用程序构建正常,如果我查看 emberjs.js 文件,我可以看到 pod 控制器、路由和模板的各种定义

例如

define('emberjs/pods/job/parts/index/controller', ['exports', 'ember'], function (exports, Ember) {
define('emberjs/pods/job/parts/index/route', ['exports', 'ember'], function (exports, Ember) {
define('emberjs/pods/job/parts/index/template', ['exports', 'ember'], function (exports, Ember) {

所以有些东西正在识别 pod 结构。

但是当我尝试访问这条路线时,问题就来了。我在控制台中收到一条警告消息,但没有显示任何内容 - 基本上它说它可以找到模板 abd,看起来它正在使用生成的控制器。

generated -> controller:parts Object {fullName: "controller:parts"}
vendor-ver-1423651170000.js:28585 Could not find "parts" template or view. Nothing will be rendered Object {fullName: "template:parts"}
vendor-ver-1423651170000.js:28585 generated -> controller:parts.index Object {fullName: "controller:parts.index"}
vendor-ver-1423651170000.js:28585 Could not find "parts.index" template or view. Nothing will be rendered Object {fullName: "template:parts.index"}
vendor-ver-1423651170000.js:28585 Transitioned into 'jobs.job.parts.index'

如果我查看 Chrome 中的 Ember 检查器,我会看到在 Routes 部分它显示部件/索引以将部件/索引控制器的路由作为部件/索引,将模板作为部件/索引。 这是我应该期待的吗? 我不确定 Ember 在使用 pod 时如何解决各个部分。

为了测试这一点,我将模板的副本放在模板/零件目录中并重新加载它。这次它找到了模板并渲染了它,但缺少数据——可能是因为它使用了默认路由和控制器。

有谁知道我做错了什么。我是否错过了某个步骤,或者配置不正确?

【问题讨论】:

  • 你的路由文件是什么样的?
  • jobjob.parts路由中,尝试添加一个template.hbs文件,里面只有{{outlet}}
  • 看看这个 - programwitherik.com/ember-pods - 可能会有帮助
  • 您是否查看过解析器所说的内容?在 environment.js 中取消注释这些行: ENV.APP.LOG_RESOLVER = true; ENV.APP.LOG_ACTIVE_GENERATION = true;

标签: ember.js refactoring ember-cli ember-pods


【解决方案1】:

尝试在添加新路由/控制器/模板时删除旧路由/控制器/模板。不要保留两份。

它也可能与您的文件结构无关。尝试创建一个空白应用程序并逐个复制文件,以查看问题何时开始发生。使用生成器,然后尽可能用您的生成器覆盖生成的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多