详细登录烬

Verbose Logging in Ember

本文关键字:登录      更新时间:2023-09-26

我现在正试着把我的头绕在烬上,但所有的魔法都让这变得困难。

我已经设置了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或模板。

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

编辑:

应用程序。ExampleItems观点:

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

和App.ExampleItemsController:

App.ExampleItemsController = Ember.ArrayController.extend({
});

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

是否有一种方法来记录框架的这方面-看看Ember在哪里寻找模板/视图/控制器,当它自己的意志创建一个。

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

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

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

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