Ember 1.0.0-rc.1 を使用してapplication
、{{outlet}}
. 私の ApplicationView は、CSS の目的でレイアウトとカスタム クラスを利用するように明示的に定義されています。
define ["ember"], (Ember) ->
ApplicationView = Ember.View.extend
classNames: ["application"]
layoutName: "layout"
ApplicationView
ルーターを 2 つのルートに設定しました。一致するテンプレート名を付けて、それらtab1
を and と呼びます。tab2
これらのビューやコントローラーを明示的に定義していませんが、代わりに Ember の「魔法」を利用することを好みます。私の期待は、ルーターが に移動する/tab1
と、tab1
テンプレートが ApplicationView の{{outlet}}
;にレンダリングされることです。と同じ/tab2
。
アプリを実行すると、tab1 テンプレートは実際にレンダリングされ、要素は次のようになります。
<body class="ember-application">
<div id="ember229" class="ember-view application">
<div class="navbar navbar-inverse navbar-fixed-top">...</div> <!-- layout -->
<div class="wrapper"> <!-- layout -->
<script id="metamorph-1-start" type="text/x-placeholder"></script>
<script id="metamorph-0-start" type="text/x-placeholder"></script>
Tab 1 Content
<script id="metamorph-0-end" type="text/x-placeholder"></script>
<script id="metamorph-1-end" type="text/x-placeholder"></script>
etc.
と の間を行ったり来たりする/tab1
とtab2
、内側のメタモルフ番号が 0、2、3、4 と増えていきます。次に、Tab1View を次のように明示的に定義します。
define ["ember"], (Ember) ->
Tab1View = Ember.View.extend
templateName: "tab1"
Tab1View
ここでは特に特別なことをしていないので、これは暗黙の「魔法」と同等であり、すべてが同じように表示されると予想していました。ただし、DOM 要素は同じではなくなりました。
<body class="ember-application">
<div id="ember229" class="ember-view application">
<div class="navbar navbar-inverse navbar-fixed-top">...</div>
<div class="wrapper">
<script id="metamorph-0-start" type="text/x-placeholder"></script>
<div id="ember265" class="ember-view">
Tab 1 Content
</div>
<script id="metamorph-0-end" type="text/x-placeholder"></script>
etc.
これで、metamorph 要素のセットが 1 つだけになり ( を表す{{outlet}}
と思います)、新しいember-view
div が 1 つだけあります。何が起きてる?明示的なビュー定義が DOM で異なる動作につながるのはなぜですか? これは重要ですか、それとも私が心配する必要のない Ember の内部的なものですか?