Директивы в Angularjs имеют 3 области видимости, как указано ниже.
обратитесь В каких случаях директива angular область действия равна области действия контроллера?
1 . По умолчанию область действия имеет значение false , что в случае изменения переменной области действия в вашей директиве также изменяет переменную области видимости родителей, поскольку она не создает новую область.
app.directive('mydirective',function () {
return{
controller:'LocalCtrl as local',
templateUrl: '<div>{{local.content}}</div>',
}
});
scope:true
, при этом он создаст новую дочернюю область в дочерней директиве, которая прототипически наследуется от родительской области или родительской области контроллера.
app.directive('mydirective',function () {
return{
scope:true,
controller:'LocalCtrl as local',
templateUrl: '<div>{{local.content}}</div>',
}
});
3: scope:{}
: изолировать область действия, которая не наследуется от родительской области (может создавать повторно используемые компоненты/директивы)
просмотреть
<div ng-controller = "mainCtrl ">
<my-directive content="mainContent" some-fn="someFn"></my-directive>
</div>
app.directive('mydirective',function () {
return{
scope:{
twoWayConent:'=content',// two way data binding
oneWayConent:'@conent', // one way binding
someFn:'&someFn' //function binding ( 2 way)
},
controller:'LocalCtrl as local',
templateUrl: '<div>{{local.content}}</div>',
}
});
4. using require:
: если у вас есть одна директива в другой директиве, в объекте определения директивы (DDO) require может использоваться для доступа к переменным и функциям контроллеров родительской директивы в вашей дочерней директиве, как показано ниже.
просмотреть
<parent-directive>
<child-directive></child-directive>
</parent-directive>
app.directive('childDirective',function () {
return{
require:'^parentDirective' // can be array of parents directive too
link:function(scope,element,attrs,parentDirectiveController){
console.log(parentDirectiveController) // can access parent directive controllers instances
}
}
});
person
Shushanth Pallegar
schedule
20.09.2016