我有一个angular的指令和一个绑定到范围变量的表单。代码:
<my-directive></my-directive>
<form>
<input ng-model="username" required>
</form>
指令:
.directive('myDirective', function(){
restrict : 'E',
controller: function($scope){
console.log($scope.username); // Displays user name, same scope!!!
},
link: function(scope, element, attrs){
// Other codes
},
templateUrl: "templates/my-template-url.html"
}
})
可以在我的指令中的控制器内部访问用户名变量。这不是我预期的原因,因为我关闭指令并且他们不应该共享相同的范围?
为什么这样做?
答案 0 :(得分:5)
你正在使用scope:false
。它可以访问和更改它的父范围。
因此,您的节点范围无关紧要,因为username
位于其父范围内。
<my-directive></my-directive>
<form>
<input ng-model="username" required>
</form>
如果您不想访问父范围,请创建隔离范围
喜欢这个
.directive('myDirective', function(){
restrict : 'E',
scope : {},
controller: function($scope){
console.log($scope.username); // Displays user name, same scope!!!
},
link: function(scope, element, attrs){
// Other codes
},
templateUrl: "templates/my-template-url.html"
}
})