Javascript 使用管线在EmberJS中渲染视图

Javascript 使用管线在EmberJS中渲染视图,javascript,ember.js,Javascript,Ember.js,你可以从我的问题中看出,我正在慢慢地学习。我读过《伟大的路线指南》,我觉得自己已经准备好面对世界了,但是 在我的示例中,我认为{somethingView}}将被呈现,而不是控制器属性{{somethingCtrl}。这是正确的行为吗?如果是这样,您将如何从Ember.View呈现属性 JS window.App = Ember.Application.create({ ready: function() { this.initialize(); } });

你可以从我的问题中看出,我正在慢慢地学习。我读过《伟大的路线指南》,我觉得自己已经准备好面对世界了,但是

在我的示例中,我认为{somethingView}}将被呈现,而不是控制器属性{{somethingCtrl}。这是正确的行为吗?如果是这样,您将如何从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>

嗨,恩伯
{{outlet}}
服装
{{somethingView}}
{{somethingCtrl}


这种行为是正确的。以下是我对余烬核心概念的理解:

  • 模型:这些对象表示应用程序处理的日期。这些是构成应用程序域模型的业务对象
  • 控制器:控制器负责提供对模型的访问。控制器具有属性内容,应该在其中注入模型(Ember.Controller的单个对象和Ember.ArrayController的对象数组)。控制器将此内容传递给您的视图。控制器是视图的默认上下文因此您描述的行为是预期的。
  • 视图:该视图仅用于显示问题。我个人主要使用它来制作jQuery动画
但是,仍然可以访问模板中的视图实例。您只需在模板中使用名为“view”的变量。我用一个有效的例子更新了你的小提琴:


服装
{{view.somethingView}}
{{somethingCtrl}

但要清楚:最常见的情况应该是从控制器访问内容。不应该经常访问视图的变量。您希望在应用程序中显示日期,并且此日期位于模型中,因此应通过控制器访问。最可能的情况是,您希望在视图中存储标签或类似的内容(必须计算的标签)。

此行为是正确的。以下是我对余烬核心概念的理解:

  • 模型:这些对象表示应用程序处理的日期。这些是构成应用程序域模型的业务对象
  • 控制器:控制器负责提供对模型的访问。控制器具有属性内容,应该在其中注入模型(Ember.Controller的单个对象和Ember.ArrayController的对象数组)。控制器将此内容传递给您的视图。控制器是视图的默认上下文因此您描述的行为是预期的。
  • 视图:该视图仅用于显示问题。我个人主要使用它来制作jQuery动画
但是,仍然可以访问模板中的视图实例。您只需在模板中使用名为“view”的变量。我用一个有效的例子更新了你的小提琴:


服装
{{view.somethingView}}
{{somethingCtrl}
但要清楚:最常见的情况应该是从控制器访问内容。不应该经常访问视图的变量。您希望在应用程序中显示日期,并且此日期位于模型中,因此应通过控制器访问。最可能的情况是,您希望在视图中存储标签或类似的内容(必须计算的标签)

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