Я создал директиву, которая имеет изолированный объем. Так или иначе, когда я пытаюсь получить область действия от элемента директивы, она дает мне область управления, а не изолированную область видимости.Как работает метод scope() в Angular JS?
Что случилось с моим кодом? Кто может объяснить, как работает метод scope()?
Это мой JS код:
angular.module('myApp',[])
.directive('component',function(){
return {
restrict:'EA',
replace:false,
scope:{
"model":"="
},
template:'<div>{{model.name}}</div>',
link:function($scope,element,attrs){
element.bind('click',function(event){
console.log("element scope id->", element.scope().$id);
});
}
};
})
.controller('AppCtrl',function($scope){
$scope.myModel = {
name:"Click me, to see scope's id in console"
};
console.log("controller scope id->", $scope.$id);
});
и разметка:
<div ng-app="myApp" ng-controller="AppCtrl">
<component selectable model="myModel"></component>
</div>
Вам не нужно получать область действия от элемента, заменить 'element.scope()' на '$ scope'. – haki
И привязка «модели» просто не создает каких-либо дополнительных изолированных областей. поэтому вы получаете область действия компонента. – jevgenig
@haki Да, я это знаю. Но мне нужно получить область действия из * элемента *. Это необходимо. – Engineer