2

私の質問からわかるように、私はゆっくりと EmberJS を学んでいます。ルートに関する素晴らしいガイドを読み、世界に挑戦する準備ができたと感じましたが、その後...

私の例では、コントローラ プロパティ {{somethingCtrl}} ではなく、{{somethingView}} がレンダリングされると思いました。これは正しい動作ですか?もしそうなら、Ember.View からどのようにプロパティをレンダリングしますか?

JS

window.App = Ember.Application.create({
    ready: function() {
        this.initialize();
    }
});


window.App.Router = Ember.Router.extend({
    root: Ember.Route.extend({
        index: Ember.Route.extend({
            route: '/',
            connectOutlets: function(router) {
                var controller = router.get('applicationController');
                controller.connectOutlet('garments');
            }
        })
    })
})

window.App.ApplicationView = Ember.View.extend({
    templateName: 'application',
});

window.App.ApplicationController = Ember.Controller.extend();


window.App.GarmentsController = Ember.Controller.extend({
    somethingCtrl: "Something in the controller"
});

window.App.GarmentsView = Ember.View.extend({
    templateName: 'garments',
    somethingView: "Something in the view"
});​

DOMのもの

<script type="text/x-handlebars" data-template-name="application">
  <h1>Hi Ember</h1>
    {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="garments">
  <h1>Garments</h1>
    {{somethingView}}<br>
    {{somethingCtrl}}
</script>

</p>

フィドル

4

1 に答える 1

4

この動作は正しいです。これらは、これらの残り火のコア概念に関する私の理解です。

  • モデル: これらのオブジェクトは、アプリケーションによって処理される日付を表します。これらは、アプリケーションのドメイン モデルを形成するビジネス オブジェクトです。
  • コントローラ: コントローラは、モデルへのアクセスを提供する責任があります。コントローラにはプロパティ content があり、そこにモデルを挿入する必要があります (Ember.Controller の単一のオブジェクトと Ember.ArrayController のオブジェクトの配列)。コントローラーは、このコンテンツをビューに渡します。Controller は、ビューのデフォルトのコンテキストです。したがって、説明した動作は予想されます。
  • ビュー: ビューは、問題を表示するためのものです。個人的には、主に jQuery アニメーションを作成するために使用しています。

それでも、テンプレート内のビュー インスタンスにアクセスすることは可能です。テンプレートで「view」という名前の変数を使用するだけです。私はあなたのフィドルを実用的な例で更新しました: http://jsfiddle.net/jPK8A/5/

<script type="text/x-handlebars" data-template-name="garments">
  <h1>Garments</h1>
    {{view.somethingView}}<br>
    {{somethingCtrl}}
</script>

ただし、明確にするために、最も一般的なケースは、コントローラーからコンテンツにアクセスすることです。ビューの変数にアクセスすることはあまりありません。アプリに日付を表​​示したいのですが、この日付はモデルに存在するため、コントローラーを介してアクセスする必要があります。最も可能性の高いケースは、ビューまたはそのようなもの (計算する必要があるラベル) にラベルを保存することです。

于 2012-11-29T11:25:54.857 に答える