Javascript 具有独立作用域版本的指令冲突
在我的Angular应用程序中,我有一个指令“editable”。它写在Angular版本1.2.0-rc.2上,运行良好,但当我将框架升级到版本1.2.13时,指令中断。我检查了其他版本的功能,但感到困惑,因为该指令只适用于三个版本:1.2.0rc1、1.2.0-rc.2和1.2.0-rc.3 在新版本中,此指令仅适用于两种丑陋的编辑: 1.指令的属性“terminal”设置为“true” 2.在“link”函数中编译元素 指令具有简单的逻辑:Javascript 具有独立作用域版本的指令冲突,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,在我的Angular应用程序中,我有一个指令“editable”。它写在Angular版本1.2.0-rc.2上,运行良好,但当我将框架升级到版本1.2.13时,指令中断。我检查了其他版本的功能,但感到困惑,因为该指令只适用于三个版本:1.2.0rc1、1.2.0-rc.2和1.2.0-rc.3 在新版本中,此指令仅适用于两种丑陋的编辑: 1.指令的属性“terminal”设置为“true” 2.在“link”函数中编译元素 指令具有简单的逻辑: 显示以前保存的值 单击按钮“编辑”->显示新值的
- $compile:
- 由于d0efd5ee,在应用程序模板或某些其他指令模板中定义的子元素不会获得隔离范围。理论上,任何人都不应该依赖这种行为,因为这种行为非常罕见——在大多数情况下,隔离指令都有一个模板
- 由于909cabd3,没有隔离作用域的指令无法从同一元素上的隔离指令获取隔离作用域。如果代码依赖于此行为(非隔离指令需要从隔离作用域内访问状态),请更改隔离指令以使用作用域局部变量显式传递这些状态
ngModel
绑定到指令使用的作用域
但是,使用ngModel
指令不能这样工作。您必须使用名为require
的指令属性,要求由ngModel
指令添加的ngModelController
实例,您将用需要控制器的指令名称(即“ngModel”)填充该实例。
然后,link
函数的第四个参数将引用ngModelController
实例,该实例在Angular文档中有很好的文档记录
所以
- 不需要时不要使用隔离作用域
- 记住,除了使用
属性之外,隔离作用域不再可以直接访问元素本身。。。但是你不应该那样做李>$$childHead
请在您的帖子中发布相关代码,使您的问题独立,而不依赖于第三方服务,即plunkerit’s难以判断发生了什么(可能在相邻的
ng机型
之前提前终止,尽管它们具有相同的优先级-0-这应该可以防止这种影响),但是,如果编译editable
指令。无论如何,如果你真的想深入研究它,我建议你看一下.Eliran,如果你看一看编译指令,没有在你的链接中将属性“terminal”设置为TRUE,你会看到,两个指令上的值都会改变。这对我来说是个大问题=(