Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ngIf和ngSwitch AngularJS_Angularjs_Angularjs Directive - Fatal编程技术网

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
更好上述任何一项