2

可执行示例:

http://jsbin.com/secuz/5/edit?html,js,输出

细节

上述失败与我关于 Angular 指令处理顺序的假设相矛盾。我希望首先运行外部指令,然后执行向内传播。

我是否正确地认为这种无序评估是由于ng-if优先级高于ng-show?如果是这样,不应该只在两个指令在同一个元素上时才考虑优先级吗?

主要问题

我怎样才能确保执行总是从外到内?我是否需要对我使用的所有指令给予相同的优先级?

编辑:

尝试了另外 2 个场景:

  • 如果两者都是ng-ifs,那么传播是从外向内发生的,正如预期的那样:

[[ '1 if', true ], [ '2 if', true ], [ '1 if', true ], [ '2 if', true ]]

  • 然而,两个ng-shows 表现出违反直觉的行为:

[[ '2 show', true ], [ '1 show', true ], [ '2 show', true ], [ '1 show', true ]]

4

1 回答 1

2

编译涉及这三个回调绑定步骤:

  • compile
  • pre-link
  • post-link

更多在这里

我不确定 ng-show 和 ng-if 的行为在哪里,但我敢打赌你会发现。

如果 ng-show 和 ng-if 设置了您在 post-link 中测试的行为,它实际上以相反的顺序执行,从最低的元素爬升并退出,所以这可以解释您的发现。

于 2014-08-07T06:38:18.863 回答