Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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
Javascript &引用;“销毁”;如果表达式为真,则为ng_Javascript_Angularjs - Fatal编程技术网

Javascript &引用;“销毁”;如果表达式为真,则为ng

Javascript &引用;“销毁”;如果表达式为真,则为ng,javascript,angularjs,Javascript,Angularjs,如果的值为真,我想知道是否可以解除绑定/销毁ng 我用递归指令创建了树结构,每个分支都有,如果需要渲染元素,它会保持跟踪。问题是解决方案增加了观察者的数量,因为每个ng if都会创建新的观察者。一旦ng if表达式变为true它就不会改变,因此可以删除手表,在这种情况下,有没有办法“销毁”ng if 如果但不使用监视程序,则相当于ng 这与您想要实现的目标有些相似。如果使用angular 1.3+,您可以做到 <div ng-if="::visible"> 这将从angular

如果的值为真,我想知道是否可以解除绑定/销毁
ng

我用递归指令创建了树结构,每个分支都有
,如果需要渲染元素,它会保持跟踪。问题是解决方案增加了观察者的数量,因为每个
ng if
都会创建新的观察者。一旦
ng if
表达式变为
true
它就不会改变,因此可以删除手表,在这种情况下,有没有办法“销毁”ng if

如果但不使用监视程序,则相当于
ng


这与您想要实现的目标有些相似。

如果使用angular 1.3+,您可以做到

<div ng-if="::visible">


这将从angular watchlist中删除表达式,并且基本上没有手表。对应用程序中的任何单个绑定表达式使用此选项。将手表计数保持在较低水平,并加快周期。

您可以获取源代码并提取该指令代码,以便对其进行修改以实现您想要的功能,这个解决方案的问题是,一旦父作用域赋值,所有子作用域都将继承它,因此默认情况下,我必须为每个作用域变量赋值。假设“visible”的值从undefined变为false,然后变为true,当它变为false时,监视程序将被删除,对吗?所以这并不能解决问题。@evenstar在控制器中用false启动怎么样?然后等待它变成真的-这应该是有效的。顺便说一句,上述解决方案适用于所提出的问题,即单个绑定而不是多个绑定!。如果您正在查看多个状态,则无法进行单个绑定。在它变为真后,您必须手动删除该监视程序。@VikasBansal没问题。很高兴这有帮助。