我是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);
}
};
});
典筆 http://codepen.io/anon/pen/VLMdRL
問題
問題是,是否可以創建第三個指令,從中可以派生出MyPic和MyButton指令,並處理my-log =「...」和my-warn =「...」屬性( $日誌代碼和標題屬性添加到模板代碼)? my-log和my-warn屬性必須由相同的指令處理,並且屬性值仍應由子指令訪問。
感謝您的幫助!
指令只能繼承他的父母控制範圍,只有當他們是嵌套和孩子的指示已經提出父指令爲'require' –
有沒有其他方法可以完成我想要做的事情?與接受$ scope和$ element對象作爲參數的服務一樣?或者,在服務中操作DOM是否是一個非常糟糕的主意? –
是的,從服務中操縱DOM是個壞主意。首選的方式是DOM ..你可以考慮事件'$ broadcast'或'$ emit'在這種情況下 –