我已经创建了一个指令,它有一个隔离的范围。不知何故,当我试图从指令的元素获取范围时,它给了我控制器的范围,而不是隔离范围。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>
你不需要从元素中获取范围,用'$ scope'替换'element.scope()'。 – haki 2014-10-01 07:40:34
而“模型”绑定似乎并没有创建任何额外的隔离范围。这就是您收到组件范围的原因。 – jevgenig 2014-10-01 07:44:16
@haki是的,我知道。但我需要从*元素*中检索范围。这是必须的。 – Engineer 2014-10-01 07:45:25