ngIf和ngSwitch AngularJS
和ngIf和ngSwitch AngularJS,angularjs,angularjs-directive,Angularjs,Angularjs Directive,和ngSwitch之间的实际区别是什么?这两个指令都操作DOM,但ngSwitch更为详细。典型的情况是只使用ngIf,除非您需要非常大的东西,在这种情况下使用ngSwitch 是否存在ngSwitch和ngIf不能直接替换的情况?或者它们唯一的实际区别是语法?ngIf基本上是一个带有单一条件的版本。它不同于ngShow,因为它删除了实际的DOM元素,而不是简单地隐藏它。如果您使用的是带有单个真实条件检查的ngSwitch,那么我相信ngIf也会做同样的事情。,我相信,特别是在指出与ngShow
ngSwitch
之间的实际区别是什么?这两个指令都操作DOM,但ngSwitch
更为详细。典型的情况是只使用ngIf
,除非您需要非常大的东西,在这种情况下使用ngSwitch
是否存在
ngSwitch
和ngIf
不能直接替换的情况?或者它们唯一的实际区别是语法?ngIf
基本上是一个带有单一条件的版本。它不同于ngShow
,因为它删除了实际的DOM元素,而不是简单地隐藏它。如果您使用的是带有单个真实条件检查的ngSwitch
,那么我相信ngIf
也会做同样的事情。,我相信,特别是在指出与ngShow
/ngHide
的对比时。需要注意的另一个区别是:ng If
将分离一个元素并将其重新连接到位。但是ng Switch
有一个外部包含元素,您可以在该元素上声明主指令及其条件:ng Switch=“expression”
。该外部元素中的条件内容将被append()
-ed作为外部元素的最后一个子元素,从而更改其相对于外部元素中任何非条件内容的位置
另外,请参阅,以获取这三种方法的交互式演示,展示执行过程中的差异
编辑:此行为在Angular 1.2中已更改。元素现在保留在原来的位置。上面的代码笔提到并演示了这一点,它提供了一个指向1.08 Plunk的链接,不幸的是,它已经消失了 另一个区别是ngIf和ngSwitch创建新的作用域,而ngShow/ngHide不创建新的作用域。您可以在ngIf/ngSwitch中进行思考,就像在编码时使用if/switch一样。显然,它们做的事情几乎是一样的,但也有一些情况下ngIf更好,也有一些情况下nfSwitch更好。这是一个有用的评论,但并不能回答实际问题。例如,如果您有一些情况,并且有一个基本上是
的默认情况,ngSwitch
更好上述任何一项