2013-03-22 93 views
2

我正试图将我的头围绕Ember在这一刻,但所有的魔法都使这个困难。详细记录在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(); 
    } 

}); 

灰烬使我的ApplicationController及其application.handlebars模板:

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

但未能呈现我的example_items.handlebars模板。我没有得到任何例外或警告,如果我检查了DOM,我可以看到烬创建了一个通用的视图。

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

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

编辑:

App.ExampleItems查看:

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

而且App.ExampleItemsController:

App.ExampleItemsController = Ember.ArrayController.extend({ 

}); 
+0

你的意思是用example_items.template什么? 你使用预编译视图还是

1

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

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

+0

谢谢。你是对的。在这个例子中,我误解了ArrayView的目的,但是我很难理解Ember正在做什么。 – Undistraction

+0

同意。这是可选日志的主要候选者。要求改进的github问题不会成为失败。 –