指令范围
Directive scope
我有一个角度指令和一个绑定到范围变量的形式。代码:
<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"
}
})
在我的指令中,可以在控制器内部访问username变量。这不是我期望的原因,因为我关闭了指令,它们不应该共享相同的范围?
为什么这样做?
您正在使用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"
}
})
相关文章:
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- AngularJS:带有HTML和angular表达式的指令;编译”;具有外部范围的内容
- AngularJS指令范围约束问题重复出现
- 在 Angular 指令中,如何进行回调,其中函数名称位于父范围的变量中
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- AngularJS:从控制器访问特定的指令范围
- AngularJS:从指令设置范围变量
- AngularJS在指令模板中修改范围
- 基于范围数据更改指令模板中的元素
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 日期-时间范围指令字段未显示任何值
- 从父控制器传递工厂数据以隔离范围指令
- 从子元素访问范围指令
- AngularJS在父级和子级范围指令之间共享数据
- 隔离范围指令会导致业力错误
- 范围$指令中的watch't在AJAX请求后被调用
- 如何在AngularJS中对隔离范围指令进行单元测试
- AngularJS隔离范围指令
- 从隔离范围指令中的更改更改控制器变量值
- 美元的范围.指令中的项未定义