탭 자체의 모양을 사용자 정의하려는 경우 데코레이터를 사용하여이 작업을 수행 할 수 있습니다. 이렇게하면 런타임에 지시어의 작동 방식을 변경할 수 있습니다. 예를 들어
당신은 탭 자체의 스타일을 시도하는 경우는, 그 지침은 위의 예는 빨간색으로 탭 텍스트의 색상을 바꿀 것
(function() {
'use strict';
MdTabItemDecorator.$inject = ['$provide'];
angular.module('common').config(MdTabItemDecorator);
function MdTabItemDecorator($provide) {
$provide.decorator('mdTabItemDirective', [
'$delegate',
'$controller',
function ($delegate) {
var directive = $delegate[0];
directive.compile = function() {
return function (scope, elem, attrs) {
directive.link.apply(this, arguments);
elem.attr('style', 'color:red');
scope.tabIndex = scope.$parent.$index;
};
};
return $delegate;
}
])
}
})();
"MD-탭 항목"이 될 것입니다.
은 여기에서 일어나고있는 것은 우리가 이것은 당신이 인스턴스화하는 것입니다 지시어 객체의 표현 인 $ 위임 개체에 액세스 할 수 있습니다
function MdTabItemDecorator($provide) {
$provide.decorator('mdTabItemDirective', [
function ($delegate) {
...
}
])
으로 장식 mdTabItem를 만드는 것입니다.
이렇게하면 지시어의 동작 방식을 일부 변경하여 대리자 객체를 반환 할 수 있습니다.
이 경우 기존 링크 기능을 사용하고 지시어 요소의 스타일을 설정하는 기능을 확장했습니다.
directive.compile = function() {
return function (scope, elem, attrs) {
directive.link.apply(this, arguments);
elem.attr('style', 'color:red');
scope.tabIndex = scope.$parent.$index;
};
};
예프. 나는 어제 그것을 알아 냈다! 다행히 AngularJs 1.5를 사용하고있었습니다. 첫 번째 반복의 범위가 사라지기 때문에 실제로 다른 것을해야했습니다. 내가 할 수있는 한 빨리 질문에 대답 할 것이다 ... –
위의 경우 작동 할 것이다, 그것은 모든 경우에 지시자가 어떻게 행동 하는지를 바꾼다. –
예. 그러나 나의 요구는 더 구체적이었다. 생성 된 tabItem에 사용자 정의 클래스를 추가하려고했습니다. 귀하의 예제는 모든 tabItems에 대해서만 동일한 스타일을 추가 할 수 있습니다. 마지막 행 => scope. $ parent. $ index는 정의되지 않았습니다. 상위 범위에는 반복이 없으므로 건배. –