当前位置: 首页 > 知识库问答 >
问题:

AngularJS加载服务,然后调用controller并呈现

连厉刚
2023-03-14
<div ng-app="app" ng-controller="root">
    <h3>Do not render this before user has loaded</h3>            
    {{user}}
</div>
​
angular.module('app', []).
factory('user',function($timeout,$q){
    var user = {};            
    $timeout(function(){//Simulate a request
        user.name = "Jossi";
    },1000);
    return user;
}).
controller('root',function($scope,user){

    alert("Do not alert before user has loaded");
    $scope.user = user;

});
​

共有1个答案

谷梁嘉悦
2023-03-14

您可以使用手动初始化延迟angular app的初始化,而不是使用ng-app属性自动初始化。

// define some service that has `$window` injected and read your data from it
angular.service('myService', ['$window', ($window) =>({   
      getData() {
          return $window.myData;
      }
}))    

const callService = (cb) => {
   $.ajax(...).success((data)=>{
         window.myData = data;
         cb(data)
   })
}

// init angular app 
angular.element(document).ready(function() {
       callService(function (data) {
          doSomething(data);
          angular.bootstrap(document);
       });
});

其中callservice是执行AJAX调用并接受成功回调的函数,这将初始化angular App。

还要检查ngcloak指令,因为它可能是您需要的一切。

 类似资料:
  • 问题内容: 我的问题是我需要在调用控制器和呈现模板之前加载服务。 http://jsfiddle.net/g75XQ/2/ HTML: JavaScript: ​ 问题答案: 您可以使用手动初始化来推迟angular应用的初始化,而不是使用attribute 进行自动初始化。 您的函数执行AJAX调用并接受成功回调的位置在哪里,这将初始化angular app。 还要检查指令,因为它可能满足您的所

  • 问题内容: 我正在使用@ font- face将字体嵌入到我的网站中。首先,文本将作为系统默认值呈现,然后(假定字体文件已加载)正确的字体将在几分之一秒后呈现。有没有一种方法可以通过延迟页面渲染直到加载字体或类似字体之后来最小化/消除此延迟。 问题答案: 这取决于浏览器的行为方式。 首先,您的@font在哪里声明?它是内联到HTML,是在页面上的CSS表中声明,还是(希望)在外部CSS表中声明?

  • 问题内容: 我在将服务中的数据填充到视图中时遇到问题。我有这样定义的服务 和我的控制器 如果我从控制器使用$ http.get,数据将很好地填充,但是,如果我尝试从服务中调用数据,那么我什么也不会得到。我知道查询是异步的,但是我很难理解一旦返回数据就如何填充$ scope变量。我可以使用$ rootscope广播事件并在控制器中侦听它,但这似乎并不是完成此事件的正确方法。对于如何正确执行此操作的任

  • 我用jQuery将一些包含数学的内容加载到html文件中。现在我想让Mathjax排版这个新内容,但它不起作用。这就是我的JavaScript代码的样子 但它只加载内容,不应用MathJax。有什么建议说明它为什么不起作用吗? 编辑我添加了第二个按钮,带有第二次单击功能,运行以下脚本 如果我单击第一个按钮,它将加载新内容,而不应用MathJax。如果现在单击第二个按钮,它会将MathJax应用于新

  • 问题内容: 我正在渲染项目中的模态窗口。但是在某些情况下,我想在模态加载后调用一个函数。我曾尝试与和,但没有用。谁能帮我解决这个问题。 谢谢你们。 问题答案: 我浏览了Angular ui bootstrap的文档,最后找到了解决方案。 该方法返回一个具有属性的对象: - 在下载内容的模板并解析所有变量后打开模态时解决的问题 在模型打开后调用函数。

  • 问题内容: 我目前正在尝试构建一个使用jQuery UI手风琴控件的AngularJS应用程序。 问题是, 在 我的AngularJS服务完成从服务器加载数据 之前 启动了jQuery UI手风琴。换句话说:手风琴启动时没有任何数据,因此填充来自AngularJS的数据时也不会显示。 该视图如下所示: 我的AngularJS控制器如下所示: 我的AngularJS服务看起来像这样: 有什么办法告诉