我在Angular项目中有一些代码,它们使用两个具有隔离范围的独立指令.它们不需要共享范围,只需存在于同一元素上.它们都以稍微不同的方式改变DOM,并且重要的是绑定到作为参数传递的值.
这在1.0中工作,但是Angular 1.2现在在尝试执行此操作时会生成错误
Multiple directives asking for new/isolated scope
基于项目git历史出现Angular 1.2更改行为,以保持两个隔离的指令在同一元素上分开.这是一件好事,当在同一元素上放置两个“Attribute”指令时,它可以正常工作.
即
<div my:directive="myDirectiveData" my:other-directive="myOtherDirectiveData" />
像你期望的那样工作.
然而
<my:directive my:directive-data="myDirectiveData" my:other-directive="myOtherDirectiveData" />
引发上述错误. (多个指令要求新/隔离范围)
在这种情况下,我希望每个指令仍然与它们自己的非共享隔离范围并行存在.
这在Angular 1.2中仍然可行吗?
在同一元素上定义多个指令时会发生什么情况的摘要:
Scenario directive #1 directive #2 Result 1 no new scope no new scope Both directives use the controller's scope. (This should be obvIoUs.) 2 new scope new scope Both directives share one new child scope. 3 new scope no new scope Both directives share one new child scope. Why does dir #2 use the child scope? This seems odd to me. 4 isolate scope no new scope Angular v1.0: both directives share the isolate scope. Angular v1.2+: dir #1 uses the isolate scope,dir #2 uses the controller's scope.
请注意,不允许以下方案(Angular引发错误):
Scenario directive #1 directive #2 5 isolate scope new scope 6 isolate scope isolate scope