首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJS加载服务,然后调用控制器并呈现

AngularJS加载服务,然后调用控制器并呈现
EN

Stack Overflow用户
提问于 2012-09-30 07:25:58
回答 6查看 37.9K关注 0票数 21

我的问题是,我需要在调用控制器和呈现模板之前加载一个服务。http://jsfiddle.net/g75XQ/2/

Html:

代码语言:javascript
复制
<div ng-app="app" ng-controller="root">
    <h3>Do not render this before user has loaded</h3>            
    {{user}}
</div>
​

JavaScript:

代码语言:javascript
复制
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;

});
​

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-09-30 08:28:28

你可以使用manual initialization来推迟angular应用的初始化,而不是使用ng-app属性来自动初始化。

代码语言:javascript
复制
// 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应用程序。

还要检查ngCloak指令,因为它可能包含了您需要的所有内容。

或者,在使用ngRoute时,您可以使用resolve属性,因此您可以看到@honkskillet答案

票数 14
EN

Stack Overflow用户

发布于 2013-03-05 02:29:06

甚至比手动引导更好(这也不总是一个坏主意)。

代码语言:javascript
复制
angular.module('myApp', ['app.services'])
   .run(function(myservice) {
      //stuff here.
   });
票数 9
EN

Stack Overflow用户

发布于 2012-10-01 00:15:41

正如我在评论中所说,在控制器中处理卸载状态会容易得多,您可以从$q中受益,从而使这一点变得非常简单:http://jsfiddle.net/g/g75XQ/4/

如果您想在加载用户时在控制器中创建一些内容:http://jsfiddle.net/g/g75XQ/6/

编辑:要延迟路由更改,直到加载了某些数据,请查看以下答案:Delaying AngularJS route change until model loaded to prevent flicker

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12657389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档