Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 在Angular中,是否有任何方法可以重新呈现或重新编译使用一次性绑定的部分页面或整个页面?_Javascript_Angularjs - Fatal编程技术网

Javascript 在Angular中,是否有任何方法可以重新呈现或重新编译使用一次性绑定的部分页面或整个页面?

Javascript 在Angular中,是否有任何方法可以重新呈现或重新编译使用一次性绑定的部分页面或整个页面?,javascript,angularjs,Javascript,Angularjs,我们在页面上有多个列表,可以包含数百个项目,因此出于性能原因,我们希望对内容使用一次性绑定,并且只在知道需要更新时进行更新,并显著减少观察者数量 如果我们使用一次性绑定,有没有办法强制Angular重新呈现页面的一部分甚至整个页面 所以我做了一些研究,但似乎没有一种土生土长的方法。我确实发现这段代码可能有助于工作,但当我尝试时,它与我使用的一些自定义第三方指令有问题,但它可能适用于其他想要做更简单事情的人: 我发现的唯一一个功能似乎就是ng if,我们知道,如果它从true变为false,然后

我们在页面上有多个列表,可以包含数百个项目,因此出于性能原因,我们希望对内容使用一次性绑定,并且只在知道需要更新时进行更新,并显著减少观察者数量


如果我们使用一次性绑定,有没有办法强制Angular重新呈现页面的一部分甚至整个页面

所以我做了一些研究,但似乎没有一种土生土长的方法。我确实发现这段代码可能有助于工作,但当我尝试时,它与我使用的一些自定义第三方指令有问题,但它可能适用于其他想要做更简单事情的人:

我发现的唯一一个功能似乎就是ng if,我们知道,如果它从true变为false,然后再变回true,当它设置为false时,它将删除元素和所有角度/范围,然后在设置为true时重新编译和重新添加(是的,包括重新绑定一次性绑定!)

我一直在研究这一解决方案,并将回帖介绍它的进展情况,但最初的测试似乎很有希望。欢迎对这种方法提出任何想法或意见

更新

所以我成功地让它工作了。 基本上,您需要重新编译和绑定的元素,并添加一个带有某种“reset”变量的ng if,如下所示:

<div id="dashboard-view" ng-if="reset">
  ... Some more code that includes one time bindings i.e. {{::store.name}}...
</div>
其中,dataUpdate可以是导致数据更新的任何事件处理程序(例如,新对象的表单或更新现有对象的表单),您的按钮可以是

<input type="submit" ng-click=dataUpdated>

我不确定超时是否是最好的方法。当我尝试只执行$scope.reset=false时$scope.reset=true;它不起作用。也许可以尝试在它们之间注入$scope.$apply()。如果有人对此有任何意见,请让我知道

但这是可行的,因此所有内容都将被重新组合(并重新命名),如果更改了这些值,则在#dashboard view div中具有一次性绑定的任何内容都将重新绑定

如果有人有更好的解决方案或方法,请随时回答。我希望这能帮助其他人,我花了一段时间才想出这个方法

更新2 所以我对ng if的源代码做了一些研究,在angular中有一个更高级的转义概念,所以如果有人对一种更纯粹的非黑客方式感兴趣,那将是一个很好的开始

<input type="submit" ng-click=dataUpdated>