디렉티브 컴파일 함수의 preLink는 언제 사용할까요?
그compileangularjs 지시어의 기능은 두 가지 기능을 가진다.preLink그리고.postLink.
프리링크 기능
하위 요소가 연결되기 전에 실행됩니다.컴파일러 링크 함수가 링크하기 위한 올바른 요소를 찾지 못하기 때문에 DOM 변환을 수행하는 것은 안전하지 않습니다.
링크 후 기능
하위 요소가 연결된 후 실행됩니다.포스트 링크 기능에서는 DOM 변환을 실시하는 것이 안전합니다.
그것은 우리가 하지 말아야 할 것을 말해준다.preLink언제 무엇을 사용할지 궁금하다.preLink? 대부분의 시간 동안 저는 그냥postLink꼭 사용해야 하는 경우가 있나요?
거의 사용하지 않아도 됩니다.preLink실행 가능한 경우는 이전에 DOM이 아닌 범위 내의 데이터를 조작할 필요가 있는 경우입니다. link(다른 지시도 마찬가지) 기능이 실행됩니다.
제이콥이 언급했듯이 컨트롤러에서도 언제든지 실행할 수 있지만 명령어 자체에 코드를 넣는 것이 더 적절할 수 있습니다.
링크 순서가 잘 설명되어 있는 디렉티브의 기능에 관한 훌륭한 기사가 있습니다.http://www.jvandemo.com/the-nitty-gritty-of-compile-and-link-functions-inside-angularjs-directives/
프리링크가 필요한 이유의 좋은 예가 필요한 경우는, 각도 지시 코드 자체를 참조하는 것을 추천합니다.예를 들어 https://github.com/angular/angular.js/blob/master/src/ng/directive/ngModel.js 입니다.
A preLink이 함수는 디렉티브가 어떤 것을 공유범위에 넣고 싶을 때 사용되며, 그래서 그 디렉티브의 다른 디렉티브에 의해 사용될 준비가 되어 있다.postLink기능들.
예를 들어 Angular의 양식 지시문은 모든 입력에 대한 항목을 포함하는 개체를 만듭니다.커스텀 디렉티브는 이 오브젝트에 안전하게 액세스 할 수 있습니다.postLink기능.
다른 디렉티브를 포함한 커스텀 디렉티브를 작성할 때는 preLink를 사용해야 했습니다.내 경우, 내 지시문에는 Angular UI Bootstrap의 자동 검색 지시문을 일부 요소에 적용하고 자체 범위 변수를 사용하여 자동 검색 기능을 초기화하는 템플릿이 포함되어 있습니다.
예를 들어 다음과 같습니다.
...
template:
"<select ng-show='dropdown' class='form-control' ng-model='ngModel' ng-options='s for s in suggestions'></select>"
+ "<textarea ng-show='!dropdown' class='form-control' ng-model='ngModel' typeahead='s for s in suggestions |filter:$viewValue' typeahead-min-length='0' typeahead-editable='{{editable}}'></textarea>",
...
이 경우 Angular는 부모보다 먼저 자녀의 지시를 링크하므로 preLink를 사용하여 자동 검색을 설정해야 합니다.directives postLink 함수로 $scope.dropdown 변수와 $scope.editable 변수를 초기화했을 때 자동 검색 디렉티브가 링크되었을 때 초기화되지 않았다는 것을 알게 되었고, 이 디렉티브가 올바르게 동작하기 위해 초기화를 preLink로 이동해야 했습니다.
언급URL : https://stackoverflow.com/questions/15297797/when-shall-we-use-prelink-of-directives-compile-function
'programing' 카테고리의 다른 글
| 문자열 목록을 위한 스프링 부트 YAML 설정 (0) | 2023.03.01 |
|---|---|
| JSON을 .plist로 변환합니다. (0) | 2023.03.01 |
| 타자기본에서 사용되지 않는 것으로 표시할 수 있습니까? (0) | 2023.03.01 |
| Angular에서 ng 스타일 및 백분율 값을 사용하여 HTML 요소 너비 설정JS (0) | 2023.03.01 |
| Git에서 워드프레스 사용 - 어떤 파일을 무시해야 합니까? (0) | 2023.03.01 |