2

我现在正试图绕过 Ember,但所有的魔法都让这变得困难。

我已经设置了LOG_TRANSITIONS: trueEmber.LOG_BINDINGS = true;这给了我一些到控制台的最小日志记录,但我真的需要更多。

当 Ember 自动创建控制器、视图和模板时,我特别难以看到发生了什么。

有没有办法记录框架的这一方面 - 查看 Ember 在哪里寻找模板/视图/控制器以及它何时自行创建。

例如,我设置了以下路线:

App.Router.map(function() {

  this.route("example_items", {path: "/"});

});

和:

App.ExampleItemsRoute = Ember.Route.extend({
  model: function() {
    return App.ExampleItem.find();
  }

});

Ember 呈现我的 ApplicationController 及其application.handlebars模板:

<header class="page-header">
  <h1>Application Template</h1>
</header>
{{outlet}}

但无法呈现我的example_items.handlebars模板。我没有收到任何异常或警告,如果我检查 DOM,我可以看到 ember 已在其位置创建了一个通用视图。

绑定日志显示 Ember 已转换为example_items,但它似乎没有使用我的 ExampleItemsController、ExampleItemsView 或模板。

如果我没有收到错误或消息,我该如何调试这种情况?

编辑:

App.ExampleItems 视图:

App.ExampleItemsView = Ember.CollectionView.extend({
  templateName: 'example_items'
});

和 App.ExampleItemsController:

App.ExampleItemsController = Ember.ArrayController.extend({

});
4

2 回答 2

1

这是您的问题:CollectionView不会使用您的模板。它将一个数组作为其content属性(通常设置为与控制器的绑定)并手动创建子视图。如果没有content集合,它将显示为空白视图。

如果你添加classNames: ['my-view']到你的视图定义,你应该看到它实例化和插入的视图实际上是你的视图类,只是空的。添加contentBinding: 'controller',它也应该为数组中的每个项目呈现 itemViews。

于 2013-03-23T19:19:28.373 回答
1

当 Ember 自动创建控制器、视图和模板时,我特别难以看到发生了什么。

有没有办法记录框架的这一方面 - 查看 Ember 在哪里寻找模板/视图/控制器以及它何时自行创建。

是的。使用最新的 ember,您现在LOG_ACTIVE_GENERATION可以在 ember 为您生成某些内容时查看 console.log 输出。

另一个可能有用的新设置是LOG_VIEW_LOOKUPS

于 2013-06-19T22:40:22.550 回答