此刻我正试图绕过Ember,但所有的魔力都让这很困难。
我设置了LOG_TRANSITIONS: true
和Ember.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({
});
答案 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