提问者:小点点

ember. js手柄:渲染vs出口vs部分vs视图vs控制


每个周围都有零散的解释,但我仍然不是100%清楚其中的差异

{{outlet}}
{{outlet NAME}}
{{render}}
{{partial}}
{{view}}
{{control}}

注意:这篇文章对部分渲染非常有帮助


共3个答案

匿名用户

它们都是模板助手,具有emberjs指南中描述的以下主要特征。(http://emberjs.com/guides/templates/rendering-with-helpers/)

1.{{出口}}-根据路由器确定的路由渲染模板。基于路由,使用相应的控制器和视图。这在基于路由渲染内容时很有用,这是最常见的情况。

2.{{出口名称}}-提供在路由中指定确切呈现内容的位置的能力。在尝试从一个路由的多个模板呈现内容时很有用。

3.{{渲染}}-类似于出口,但控制器/视图/模型可以直接或间接从帮助器中指定。当需要从多个模板渲染内容并能够覆盖上下文(视图/控制器)和模型时很有用。如果指定了模型,它将使用相应控制器的唯一实例,否则它将使用单例实例。当需要覆盖路由的上下文和模型时很有用,同时渲染多个模板内容。

4.{{control}}-与渲染一样工作,除了它为每次调用使用一个新的控制器实例,而不是重用单例控制器。当使用渲染时,不可能在不指定模型的情况下为同一路由使用多个渲染,在这种情况下应该使用控件。有用的是支持每个渲染的模板内容的控制器的新实例。

更新:控件助手已被删除https://github.com/emberjs/ember.js/commit/86eecd7ef7cdc7d2ea6f77b3a726b293292ec55d。

5.{{部分}}-将要呈现的模板作为参数,并将该模板呈现到位。它不会更改上下文或范围。它只是将给定的模板与当前范围放在一起。因此没有为部分指定视图类。当需要将模板分解为模板模块时很有用,以获得更好的控制或可重用性,而无需创建任何视图类。

6.{{view}}-这与部分类似,但提供了视图类。视图类指定要使用的模板。在将模板分解为模块但需要视图类时很有用,例如用于事件处理。

7.{{#view}}-还有视图助手的块形式,它允许指定与父视图模板内联的子视图的模板。(http://emberjs.com/guides/views/inserting-views-in-templates/)

匿名用户

{{出口}}这定义了嵌套资源/路由将在路由模板中呈现的位置

{{出口名称}}这会创建一个命名出口,您可以在其中以编程方式将某些内容呈现到

App.PostRoute = App.Route.extend({
  renderTemplate: function() {
    this.render('favoritePost', {   // the template to render
      into: 'posts',                // the route to render into
      outlet: 'posts',              // the name of the outlet in the route's template
      controller: 'blogPost'        // the controller to use for the template
    });
    this.render('comments', {
      into: 'favoritePost',
      outlet: 'comment',    
      controller: 'blogPost'
    });
  }
});

{{del}}有两个参数:

第一个参数描述了要设置的上下文可选的第二个参数是一个模型,如果提供,它将传递给控制器

{{渲染}}做了几件事:

当没有提供模型时,它会获取相应控制器的单例实例当提供模型时,它会获取相应控制器的唯一实例使用此控制器渲染命名模板设置相应控制器的模型

{{部分}}将要呈现的模板作为参数,并在适当的位置呈现该模板(使用当前范围作为上下文)。

{{view}}此帮助程序与部分帮助程序类似,只是您提供了一个视图类,而不是提供要在当前模板中呈现的模板。视图控制呈现的模板。

{{control}}与渲染一样不建议使用,只是它为每次调用使用一个新的控制器实例,而不是重用单例控制器。

大部分我只是从他们的留档复制粘贴:http://emberjs.com/guides/templates/rendering-with-helpers/

匿名用户

  1. 渲染助手在v2. x中已被弃用,而您需要使用enpe-其他地方插件。https://emberjs.com/deprecations/v2.x/#toc_rendering-into-a-render-helper-that-resolves-to-an-outlet
  2. emer. view在v1.x中不建议使用组件。参考https://emberjs.com/deprecations/v1.x/#toc_ember-view
  3. control助手只是实验性的,它已经被删除了

我想说目前只有{{出口}}被鼓励,其余的都被弃用/删除。