每个周围都有分散的解释,但我仍然不是 100% 清楚差异和用法。有人可以给我一个并排的比较吗?
{{outlet}}
{{outlet NAME}}
{{render}}
{{partial}}
{{view}}
{{control}}
注意:这篇文章对部分与渲染非常有帮助
每个周围都有分散的解释,但我仍然不是 100% 清楚差异和用法。有人可以给我一个并排的比较吗?
{{outlet}}
{{outlet NAME}}
{{render}}
{{partial}}
{{view}}
{{control}}
注意:这篇文章对部分与渲染非常有帮助
它们都是具有以下主要特征的模板助手,如 emberjs 指南中所述。( http://emberjs.com/guides/templates/rendering-with-helpers/ )
1. {{outlet}}
- 根据路由器确定的路由渲染模板。根据路由使用相应的控制器和视图。这在基于路由渲染内容时很有用,这是最常见的情况。
2. {{outlet NAME}}
- 提供在路由中指定准确呈现内容的能力。在尝试从多个模板渲染内容时很有用 route。
3. {{render}}
- 类似于,outlet
但控制器/视图/模型可以直接或间接地从助手指定。当需要从多个模板呈现内容并能够覆盖上下文(视图/控制器)和模型时很有用。如果指定了模型,它将使用相应控制器的唯一实例,否则它将使用单例实例。当需要覆盖路由的上下文和模型时很有用,同时呈现多个模板内容。
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/)
{{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}}
is deprecated像渲染一样工作,除了它为每个调用使用一个新的控制器实例,而不是重用单例控制器。
我只是从他们的文档中复制并粘贴了大部分内容:http: //emberjs.com/guides/templates/rendering-with-helpers/
render
helper 在 v2.x 中已弃用,您需要使用ember-elsewhere插件。 https://emberjs.com/deprecations/v2.x/#toc_rendering-into-a-render-helper-that-resolves-to-an-outletember.view
在 v1.x 中已弃用,而是使用Component。参考https://emberjs.com/deprecations/v1.x/#toc_ember-view control
助手只是实验性的,它已经被删除了我想说目前只{{outlet}}
鼓励一个,其余的要么被弃用/被删除。
主要区别是
{{view}}
呈现应该可用的提供的视图类
{{partial}}
呈现 Ember.TEMPLATES 中可用的模板。它可能与视图类无关。优点是父视图模板的上下文。
{{outlet}}
指定应该在此处渲染提供的视图或模板的路由器,或者根据 renderTemplate() 钩子。
{{outlet NAME}}
当您想在不同位置渲染两个视图/模板时很有用。您可以命名插座并要求路由器进行渲染。
{{render}}
与插座相同,除非您强制路由器呈现特定的视图/模板。