Я довольно новичок в Angular, и у меня возник вопрос о директивах и наследовании. Давайте предположим, что есть две директивы:Наложение директивы AngularJS
<my-pic my-log="log pic" my-warn="pic warn" my-src="/some/url/pic.jpg"></my-pic>
<my-button my-log="log button" my-warn="button warn" my-text="button text"></my-button>
JS-кода
angular.module("app", [])
.directive("myPic",function(){
return {
restrict: "E"
,scope: {
log: "@myLog"
,src: "@mySrc"
,warn:"@myWarn"
}
,template: '<img src="{{src}}" title="{{log}} | {{warn}}"></img>'
,controller: function($scope, $log){
$log.log($scope.log);
$log.warn($scope.warn);
}
};
})
.directive("myButton",function(){
return {
restrict: "E"
,scope: {
log: "@myLog"
,text: "@myText"
,warn: "@myWarn"
}
,template: '<button title="{{log}} | {{warn}}">{{text}}</button>'
,controller: function($scope, $log){
$log.log($scope.log);
$log.warn($scope.warn);
}
};
});
Код Pen http://codepen.io/anon/pen/VLMdRL
ВОПРОС
Вопрос в том, можно ли создать третью директиву, из которой могут быть выведены директивы MyPic и MyButton, и которые обрабатывают атрибуты my-log = "..." и my-warn = "..." ($ log code и добавление атрибута title в код шаблона)? Атрибуты my-log и my-warn должны обрабатываться одной и той же директивой, а значения атрибутов должны быть доступны дочерними директивами.
Благодарим за помощь!
директива может только унаследовал его родительский объем контроллера, только если они вложены и детская директива родительская директива как 'require' –
Есть ли другой способ выполнить то, что я хочу сделать? Как с сервисом, который принимает объект $ scope и $ element как параметр? Или это действительно плохая идея манипулировать DOM в сервисе? –
Да, это плохая идея манипулировать DOM со службы. предпочтительный способ был бы DOM .. вы могли бы подумать о событии '$ broadcast' или' $ emit' в этом случае –