Angular JS 自定义指令的scope范围

Angular JS 自定义指令的scope范围

1. scope:false(默认值):不会为绑定该指令的元素单独创建Scope范围。即该元素仍然处于原来的Scope范围。

绑定指令前:Scope1,绑定指令后:Scope1

2. scope:true将为指令的模版创建一个原型继承自其父级的新子范围。即绑定该指令的元素的Scope范围的新子范围ChildScope。如果同一元素上的多个指令都是scope:true,则只会创建一个ChildScope。

绑定指令前:Scope1,绑定指令后:Scope1.ChildScope

3. scope:{...}为指令的模板创建一个新的“隔离”范围。它不会从其父范围原型继承。这在创建可重用组件时很有用,这些组件不应该意外地读取或修改父范围中的数据。请注意,一个没有template或templateUrl属性的指令的隔离scope范围不会应用到子元素上。
  • scope:{info:'=info'}双向绑定
  • scope:{info:'@infoStr'}单项绑定 字符串类型
  • scope:{func:'&func'}双向绑定函数类型

绑定指令前:Scope1, 绑定指令后:Scope2。Scope1和Scope2相互独立

注意一个元素多个指令的情况:

  1. 同一个元素上的绑定多个指令时,
    • 指令的scope属性可以为均为 scope:false
    • 可以均为 scope:true
    • 也可以是这前两者的任意个数组合;
    • 还可以是一个scope:{...}与任意个 scope:false的组合;
    • 但是一定不能是两个及两个以上的scope:{...};;
    • 也不能是scope:true;scope:{...};的组合
  2. 多个指令绑定在一个元素上最多只能有一个指令定义中有template模版属性。
    • 如果该指令的scope属性是scope:{...},则该template模版的Scope就是前面提到的独立的Scope2范围;
    • 如果是scope:false ,则该template模版的Scope范围就是前面提到的Scope1 ```,指令对应模版的Scope范围就是这个独立的Scope2范围
    • 如果是scope:true,则该template的Scope范围就是Scope1.ChildScope,并且会集合所有指令中去扩展的Scope属性
  3. 多个指令的执行是有顺序的,如果都没有设置priority,依据指令名称,按照字母数字排序,字母数字越大越先执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值