2

現在、Emberに頭を包み込もうとしていますが、すべての魔法がこれを難しくしています。

私は設定しましたLOG_TRANSITIONS: true、そしてEmber.LOG_BINDINGS = true;それは私にコンソールへの最小限のロギングを与えます、しかし私は本当にそれ以上のものを必要とします。

Emberがコントローラー、ビュー、テンプレートを自動的に作成しているときに何が起こっているのかを確認するのに特に苦労しています。

フレームワークのこの側面をログに記録する方法はありますか?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がに移行し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プロパティとして受け取り(通常はコントローラーへのバインディングとして設定されます)、childViewsを手動で作成します。セットがないcontentと、空白のビューとして表示されます。

ビュー定義に追加classNames: ['my-view']すると、インスタンス化および挿入しているビューが実際にはビュークラスであり、空であることがわかります。追加contentBinding: 'controller'すると、配列内の各アイテムのitemViewsもレンダリングされます。

于 2013-03-23T19:19:28.373 に答える
1

Emberがコントローラー、ビュー、テンプレートを自動的に作成しているときに何が起こっているのかを確認するのに特に苦労しています。

フレームワークのこの側面をログに記録する方法はありますか?Emberがテンプレート/ビュー/コントローラーを探している場所と、Emberが独自の意志でテンプレート/ビュー/コントローラーを作成している時期を確認する方法はありますか?

はい。最新の残り火を使用すると、LOG_ACTIVE_GENERATION残り火が何かを生成するたびにconsole.log出力を表示できるようになります。

役立つかもしれない別の新しい設定はLOG_VIEW_LOOKUPS

于 2013-06-19T22:40:22.550 に答える