我正在尝试构建一个由CaaS / CMS驱动的,名为Prismic.io的角度应用程序。
该项目的第一阶段将是简单的内容库(由CMS管理),第二阶段将添加更复杂的Web应用程序组件。知道这一点后,我决定将Angular作为我的最佳选择,但我一直在努力寻找一个好的解决方案,以便从Prismic API延迟加载所有内容。
我决定探索的一种解决方案是拥有一个标准化的$ scope变量,我们称它为$scope.loaded
。每个控制器将执行其必须查询我的Prismic服务以获取其各自内容的所有操作,完成后将对其进行设置$scope.loaded = true
。
我坚持使用此方法的部分是如何在加载所有这些组件时准确显示页面。最简单的方法是包括ng-if
引用此loaded
值的指令,但是我觉得会有大量的未样式化内容闪烁。是的,我可以使用微调器,但是将90%的页面覆盖在微调器中的想法似乎很疯狂。
然后我想知道:如果我拉起应用程序的加载屏幕,直到所有控制器的$scope.loaded
值都变为真该怎么办?在那种情况下,我如何知道页面上当前正在使用哪些控制器并引用它们各自的作用域?
(如果您对这种方法不好的原因有意见,我希望听到他们的回答而不是回答。例如,我想这可能会创建过多的http请求)。
这里有几个选择:
您是否看过ngCloak
是否可以帮助您解决闪烁问题?https://docs.angularjs.org/api/ng/directive/ngCloak。
如果您使用的是jquery,则可以使用一个全局微调器来处理并发ajax请求http://api.jquery.com/category/ajax/global-ajax-event-handlers/。
或看看像这样的全局角度微调器https://github.com/monterail/angular-global-spinner/tree/master/src。
如果这些都不起作用,您总是可以在根范围内创建一个数组,其中每个控制器/指令都将自己注册并设置其加载标志。然后向该变量添加一个监视,以查看该数组中的所有组件何时完成加载。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句