我ng-include
该如何使用它的内容仅被加载一次的方式?这是我所拥有的:
<div data-ng-if="%condition-1%" data-ng-include="%url-1%"></div>
<div data-ng-if="%condition-2%" data-ng-include="%url-2%"></div>
<div data-ng-if="%condition-3%" data-ng-include="%url-3%"></div>
...
就我而言,在某个时刻只有一个条件成立。而且任何条件都可以在页面生存期内多次更改其值。因此ng-include
将一次又一次加载相同的内容。我如何告诉Angularng-include
只处理一次-当适当的条件首次变为真时?一次全部加载它们会杀死该页面,因为每个模板都很大。另外,条件更改没有严格的顺序,例如,condition-3
在页面生命周期内可能永远不会变为真-我想url-3
在这种情况下完全不加载内容。谢谢!
更新是,模板已在缓存中。但是它具有复杂的内部结构,例如对外部图像,iframe等的引用-每当我使用时,所有这些东西都会重新加载ng-include
。
您有很多解决方案,但目前只有2个
1°将ng-if替换为ng-show,因为ng-if会删除dom和所有可用的子作用域,从而迫使框架再次提出请求,而如果您使用ng-show,则dom仅会将被隐藏,并且该请求只能发出一次。
2°如果确实需要使用ng-if并且服务器中的内容是静态的,则可以通过手动访问angular提供的$ templateCache服务将其缓存在javascript层上,或者如果要加载的内容是html,您可以在javascript层上使用$ templateCache服务,也可以使用ng-template标记预加载该数据。
例子:
<script id="url/you/want.html" type="text/ng-template">
<div>I am preloaded dom that responds to the url/you/want.html
requests made by this application
</div>
</script>
干杯
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句