ng-repeat 디렉티브의 "priority"는 무엇을 변경할 수 있습니까?
Angular Documentation 에는 다음과 같이 기재되어 있습니다.
DOM 컴파일은 $compile() 메서드에 대한 호출에 의해 수행됩니다.이 메서드는 DOM을 통과하여 디렉티브와 일치합니다.일치하는 것이 발견되면 지정된 DOM 요소와 관련된 지시어 목록에 추가됩니다.특정 DOM 요소의 모든 디렉티브가 식별되면 우선순위에 따라 정렬되고 해당 컴파일() 함수가 실행됩니다.
ng-repeat 디렉티브는 다이내믹 ID 및 커스텀 디렉티브와 같은 특정 사용 사례에서 커스텀 디렉티브보다 우선순위가 낮다고 생각합니다.angular는 지시사항의 우선순위를 수정하여 하나의 실행을 다른 것보다 먼저 선택할 수 있도록 허용합니까?
예, 지시문의 우선순위를 설정할 수 있습니다. ng-repeat
의 priority는 1000으로 실제로는 커스텀 디렉티브보다 높습니다(기본 priority는 0).이 번호를 지침과 관련하여 자신의 우선 순위를 설정하는 방법에 대한 지침으로 사용할 수 있습니다.
angular.module('x').directive('customPriority', function() {
return {
priority: 1001,
restrict: 'E',
compile: function () {
return function () {...}
}
}
})
priority - 1개의 DOM 요소에 복수의 디렉티브가 정의되어 있는 경우, 디렉티브가 적용되는 순서를 지정할 필요가 있는 경우가 있습니다.priority는 컴파일 함수가 호출되기 전에 디렉티브를 정렬하기 위해 사용됩니다.priority는 숫자로 정의됩니다.우선 순위가 높은 지시문이 먼저 작성됩니다.우선순위가 같은 지시어의 순서가 정의되어 있지 않습니다.기본 priority는 0 입니다.
AngularJS는 요소와 관련된 모든 지시사항을 찾아 처리합니다.이 옵션은 우선순위가 높은 지시문이 다른 지시문보다 먼저 컴파일되거나 연결되도록 지시문을 우선순위별로 정렬하도록 angular를 지정합니다.이 옵션을 사용하는 이유는 컴파일된 이전 디렉티브 출력에 대해 조건부 체크를 실행할 수 있기 때문입니다.
다음 예제에서는 첫 번째 추가 버튼과 추가 후에만 버튼을 사용합니다.class
[현재로(To current 버튼:
데모
App.directive('btn', function() {
return {
restrict: 'A',
priority: 1,
link: function(scope, element, attrs) {
element.addClass('btn');
}
};
});
App.directive('primary', function() {
return {
restrict: 'A',
priority: 0,
link: function(scope, element, attrs) {
if (element.hasClass('btn')) {
element.addClass('btn-primary');
}
}
};
});
언급URL : https://stackoverflow.com/questions/19270392/what-is-priority-of-ng-repeat-directive-can-you-change-it
'source' 카테고리의 다른 글
왜 ng-transclude의 범위가 지시문의 범위의 하위 항목이 아닌가? - 지시문에 분리된 범위가 있는 경우? (0) | 2023.02.13 |
---|---|
Woocommerce에서 카트 항목 수 제한 (0) | 2023.02.13 |
테마를 사용하지 않고 WordPress에서 HTML 사이트를 호스팅하는 방법은 무엇입니까?그게 가능한가요? (0) | 2023.02.13 |
Oracle 쿼리의 각 행에 난수 생성 (0) | 2023.02.09 |
사전과 같은 JSON 스키마 (0) | 2023.02.09 |