ember.js + 핸들 바 : 렌더 vs 아울렛 vs 부분 vs 뷰 vs 컨트롤
주위에 각각에 대한 설명이 흩어져 있지만 차이점과 사용법에 대해서는 아직 100 % 명확하지 않습니다. 누군가 나를 나란히 비교할 수 있습니까?
{{outlet}}
{{outlet NAME}}
{{render}}
{{partial}}
{{view}}
{{control}}
참고 : 이 게시물 은 부분 렌더링과 렌더링에 매우 유용했습니다.
이들은 모두 emberjs 가이드에 설명 된 다음과 같은 주요 특성을 가진 템플릿 도우미입니다. ( http://emberjs.com/guides/templates/rendering-with-helpers/ )
1. {{outlet}}
- 라우터에 의해 결정된 경로에 기초하여 템플릿을 렌더링한다. 경로를 기반으로 해당 컨트롤러와보기가 사용됩니다. 이는 가장 일반적인 경우 인 경로를 기반으로 콘텐츠를 렌더링 할 때 유용합니다 .
2.- {{outlet NAME}}
콘텐츠를 정확히 렌더링 할 경로를 지정할 수있는 기능을 제공합니다. 경로에 대해 둘 이상의 템플릿에서 콘텐츠를 렌더링하려고 할 때 유용합니다 .
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}}
되어 사용되지 않는 대신 싱글 컨트롤러를 재사용의 모든 통화에 대해 새 컨트롤러 인스턴스를 사용하는 것을 제외하고 작품, 렌더링 좋아합니다.
Most of this I just copied and pasted from their documentation: http://emberjs.com/guides/templates/rendering-with-helpers/
render
helper is deprecated in v2.x instead you need to use ember-elsewhere addon. https://emberjs.com/deprecations/v2.x/#toc_rendering-into-a-render-helper-that-resolves-to-an-outletember.view
is deprecated in v1.x instead use Component. refer https://emberjs.com/deprecations/v1.x/#toc_ember-viewcontrol
helper is experimental only, its already removed
I would say currently only {{outlet}}
is encouraged one remaining all are either deprecated/removed.
Main differences are
{{view}}
renders the provided view class which should be available
{{partial}}
renders the template available in Ember.TEMPLATES. its may not have related the view class. Advantage is context of the template remains of the parent view.
{{outlet}}
Specify the router that here it is supposed to render the provided view or template or as per renderTemplate() hook.
{{outlet NAME}}
useful when you want to render two views/templates at different positions. You can name the outlets and ask router to render.
{{render}}
same as outlet except you force the router to render specific view/template.
ReferenceURL : https://stackoverflow.com/questions/19982257/ember-js-handlebars-render-vs-outlet-vs-partial-vs-view-vs-control
'IT이야기' 카테고리의 다른 글
Postgresql에서 누적 합계 계산 (0) | 2021.04.12 |
---|---|
getdate ()의 날짜 부분을 얻는 방법 (0) | 2021.04.12 |
rmarkdown : pandoc : pdflatex를 찾을 수 없습니다. (0) | 2021.04.11 |
AngularJ는 부분 템플릿 포함 (0) | 2021.04.11 |
경고 받기 : " 'newdata'에는 1 개의 행이 있지만 발견 된 변수에는 32 개의 행이 있습니다." (0) | 2021.04.11 |