Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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 AngularJS在应用程序启动时加载数据_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS在应用程序启动时加载数据

Javascript AngularJS在应用程序启动时加载数据,javascript,angularjs,Javascript,Angularjs,我有一个必须在AngularJS启动时加载(或之前加载)的对象(它是一个隐藏/显示部分用户界面的用户权限配置文件,检查也在服务器端完成) 我的第一个想法是使用: module.run(function() {... }) 但是async和Promissions的本质意味着配置文件可以在其他所有操作之后加载 我的下一个想法是将概要文件作为脚本元素内联: <script type="text/javascript" src="/api/user-profile"></script

我有一个必须在AngularJS启动时加载(或之前加载)的对象(它是一个隐藏/显示部分用户界面的用户权限配置文件,检查也在服务器端完成)

我的第一个想法是使用:

module.run(function() {... })
但是async和Promissions的本质意味着配置文件可以在其他所有操作之后加载

我的下一个想法是将概要文件作为脚本元素内联:

<script type="text/javascript" src="/api/user-profile"></script>
然后在module.run()期间将用户配置文件放入根范围

这很管用,但看起来很脏

基本上,我希望在Angular启动之前或启动期间加载数据,就像您在routes中使用resolve一样,因为它会在继续之前等待


有没有更干净的方法?也许是某种角度服务?

您可以使用
Angular.bootstrap
手动启动Angular.js。这样,您可以先加载数据,然后在准备就绪时加载数据。调用
angular.bootstrap()
启动angular模块

您必须准备的内容:

  • 从文档中删除
    ng app=“XXX”
  • 一切就绪后调用angular.bootstrap()

  • 我将资源或服务用于当前用户的数据。直到x点才加载的事实并不困扰我,因为默认情况下,所有内容都是隐藏的,并且在确认用户有“权限”查看时显示。@DrewR有趣的是,也许我可以将用户配置文件的加载移动到注入基本控制器的服务中,然后基本控制器处理将其放入范围,默认情况下是隐藏内容,直到加载为止……是的。当我说所有的东西都是隐藏的,虽然我没有在任何地方都隐藏ng-我有通用的功能来确定是否应该显示导航项目、页面功能等。如果您使用路由或状态(角度用户界面),您可以拦截转换,并在用户没有权限的情况下阻止转换完成(或者确实延迟状态转换,直到用户配置文件加载)。@DrewR我有一个BaseCtrl,所有内容都在其中,所以只需放置1个ng show即可。它隐藏页面并显示加载对话框,直到加载为止(优于内容闪存)。可惜你不能接受评论作为答案!更新一个古老但流行的问题。我现在使用AngularUI路由器和嵌套的抽象路由在需要之前解析数据。
    var userProfile = { ... };