详细记录在Ember中

时间:2013-03-22 20:21:46

标签: javascript debugging logging console ember.js

此刻我正试图绕过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({

});

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

  

当Ember自动创建控制器,视图和模板时,我特别挣扎着看看发生了什么。

     

有没有办法记录框架的这个方面 - 看看Ember在寻找模板/视图/控制器的位置以及何时根据自己的意愿创建一个。

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

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