ember.js +车把:渲染VS出口VS局部VS视图,相对于对照ember.js +车把:渲染VS

2019-05-12 17:32发布

有每个散解释相关身边,但我仍然在分歧和使用率不是100%清楚。 可能有人给我一个侧方比较?

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

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

Answer 1:

它们与在emberjs指南描述的以下主要特点是所有的模板助手。 ( http://emberjs.com/guides/templates/rendering-with-helpers/ )

1. {{outlet}} -呈现基于由所述路由器确定的路线上的模板。 基于路径上的相应的控制器和视图被使用。 根据路线,这是最常见的情况上呈现的内容时,这是非常有用的

2. {{outlet NAME}} -提供到底在哪呈现内容的路由,指定的能力。 有用当试图从路线不止一个模板呈现内容

3. {{render}} -类似于outlet但是控制器/视图/模型可以直接或间接地从辅助指定。 有用需要来呈现来自多个模板内容与覆盖上下文(视图/控制器)和模型的能力时。 如果指定了模型,可以使用相应的控制器的唯一实例,否则将使用Singleton实例。 需要时在此改变路线的环境和模式,而呈现多种模板的内容非常有用

4. {{control}} -作品喜欢渲染,但它采用了新的控制器实例每次调用,而不是重用的单控制器。 当使用render ,不可能使用多个渲染相同的途径,而无需指定模型,该情况下, control应该被使用。 有用支持控制器的新实例为呈现每个模板的内容。

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

5. {{partial}} -注意到要被渲染为参数的模板,并呈现该模板就位。 它不改变环境或范围。 它只是下降到给定模板与当前范围的地方。 因此,没有视图类的部分规定。 有用当需要打破模板到模板模块,以便更好地控制或可重用性,而不会产生任何视图类

6. {{view}} -这很像在局部而是提供一个视图类。 视图类指定要使用的模板。 打破了模板到模块,但需要一个视图类如事件处理时非常有用。

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



Answer 2:

{{outlet}}这定义了嵌套的资源/路由将被路由的模板内呈现

{{outlet NAME}}这将创建一个名为插座,您可以通过编程方式呈现到的东西

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'
    });
  }
});

{{render}}有两个参数:

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

{{render}}做几件事情:

当没有提供模型,可以得到相应的控制器的一个实例,当提供一个模型,可以得到相应的控制器的唯一实例呈现使用这种控制器命名模板设置相应的控制器的型号

{{partial}}需要被渲染为参数的模板,并呈现代替该模板(使用当前范围作为上下文)。

{{view}}这个助手的作用类似于局部帮手,除了没有提供被当前模板中表述的模板,你提供一个视图类。 视图控件呈现什么样的模板。

{{control}}过时的作品喜欢渲染,但它采用了新的控制器实例每次调用,而不是重用的单控制器。

这其中大部分我只是复制,并从他们的文档粘贴: http://emberjs.com/guides/templates/rendering-with-helpers/



Answer 3:

  1. render助手在v2.x已取消,而不是你需要使用烬别处插件。 https://emberjs.com/deprecations/v2.x/#toc_rendering-into-a-render-helper-that-resolves-to-an-outlet
  2. ember.view在1.x版改为使用过时组件 。 参考https://emberjs.com/deprecations/v1.x/#toc_ember-view
  3. control助手是实验而已,它已经删除

我会说目前只有{{outlet}}是一个鼓励所有剩余要么弃用/删除。



Answer 4:

主要的区别

{{view}}渲染应备有提供的视图类

{{partial}}呈现在Ember.TEMPLATES提供的模板。 它可能没有相关的视图类。 优点是模板的情况下仍然父视图。

{{outlet}}指定,这里假设以使提供视图或模板或按renderTemplate()钩路由器。

{{outlet NAME}}当你想呈现在不同位置的两个视图/模板有用。 可以命名网点,并要求路由器来呈现。

{{render}}一样的出口,除非你强制路由器来呈现特定视图/模板。



文章来源: ember.js + handlebars: render vs outlet vs partial vs view vs control