angular中directive的scope用法
来源:互联网 发布:linux vim查看文件命令 编辑:程序博客网 时间:2024/06/08 18:42
## 说明
指令里有个scope属性,可以用来设置指令的作用域范围,默认值为false。
默认值 scope:false
不会有自己的作用域,即是直接使用父级的scope里的值。
scope:true
创建自己的作用域,同时继承父级scope里的值,即等同于从父级拿到初始值,修改它,不会改变父级scope里的值。(和ng-controller的不太一样,后面有提到)
scope:{}
完全独立的作用域($rootScope都拿不到),通过三种模式 = & @同父级scope交互。
1、= 双向绑定 写法是
<demo a="aa"></demo>
2、@ 单向绑定 写法是
<demo b="{{bb}}"></demo>
3、& 函数方法绑定 写法是
<demo c="cc()"></demo>
那么像上面这样scope里就是:
scope:{ a:'=', b:'@', c:'&'}
aa,bb,cc都是父级scope里的值。
注意:这里从父级传过来的函数,是引用,是不能操作指令里的scope值的,会报错。只是能执行父的方法,没法传递参数数据过去。
另外,指令的这里定义指令的名字是驼锋命名的,在html里要转成中划线链接的,如 指令名是 aBc ,那么 html里要写成<a-bc> <a-bc>,属性值绑定也遵守这个规则,大写字母替换成 ‘中划线+小写’,如,ABC,就要写成<a-b-c><a-b-c>。
附:作用域继承时的关系:
在子里修改引用类型的值是会同时改变父子的值,推荐的写法是推荐写成引用类型的?这样也不太好。。
可以测下代码:
<h1>父作用域:</h1><p>{{a}}</p> <p>{{b}}</p> <p>{{c.str}}</p> <p>{{d.str}}</p> <div ng-controller="MyController"> <h1>子作用域:</h1> <p>{{a}}</p> <p>{{b}}</p> <p>{{d.str}}</p> </div>
$rootScope.a= 'a的默认值,父修改会影响所有的子级';$timeout(function(){ $rootScope.a = '父级a改变了,子级也跟着变了';},2000);$rootScope.b= 'b的默认值,子级修改不会影响父级';$timeout(function(){ $scope.b = '子级b改变了,不会影响父级';},2000);$rootScope.c= {str:'c的默认值,子级修改会影响父级,因为是引用类型'};$timeout(function(){ $scope.c.str='子级c改变了,会影响父级,因为是引用类型';},2000);$rootScope.d= {str:'d的默认值,子级修改会影响父级,因为是覆盖'};$timeout(function(){ $scope.d={str:'子级d改变了,不会影响父级,因为是覆盖'};},2000);
0 0
- angular中directive的scope用法
- angular directive中scope:{}
- angular中scope的用法
- angular scope of directive
- angular创建新指令directive中scope的作用以及绑定策略
- angular directive详解之scope
- angular的directive的属性和用法
- angularJs中directive的scope ‘@’,‘=’区别
- Angular中$scope的$watch
- Angular 学习之 Directive 中的scope
- 关于Angular中directive的简单应用
- Angular中app-directive的基本构成
- angular笔记 directive scope 调用父scope带参数方法
- angular directive的使用
- angular中$scope.$apply和$scope.$digest的区别
- Angular JS中scope的作用域
- angular指令中scope的绑定策略
- AngularJS学习:directive的scope
- 【错误日志/debug】二叉树remove函数指针delete后赋NULL
- logstash5.x output 顺序问题
- matplotlib给子图添加图例
- Leetcode的word ladder问题
- 详解wait和waitpid函数
- angular中directive的scope用法
- JavaScript中call()l和apply()的区别
- windows8.1 python3.4 安装nltk
- JetBrains IDEA 系列产品通用xx方法(license server)
- UTF8编码区间
- 欢迎使用CSDN-markdown编辑器
- C++——NOIP模拟题——二叉树
- poj 1753 dfs+Enum/bfs+bits
- ViewPager加载网络图片