如何使用Angular JS在页面加载上调用函数

时间:2017-02-13 22:16:39

标签: angularjs

我有一个角度控制器,它有许多功能,可以在它们之间共享数据。问题是,我从函数1返回的数据在函数2中使用,然后在函数2中返回的数据在函数3中使用。我的问题是函数2和函数3首先执行并且说没有找到数据有没有办法我可以安排函数1先执行。

以下是我的参考代码

$scope.Read = function () {
    var get = ServiceName.Read();
    getConfig.then(function (d) {
        $scope.RID = d.data;
        alert($scope.RID);
    }, function (error) {
        $log.error('Oops! Something went wrong while fetching the application key data.' + error)
    })

}
$scope.Read();

功能2我想使用数据

$scope.getApp = function () {
        var sub ={
                "RID": $scope.RID
        }
        var App = ServiceName.getApp(sub);

        App.then(function (d) {
            $scope.LID = d.data.BUser;
        }, function (error) {
            $log.error('Opps! Something went wrong in getting appplication defaults');
        });
    }
    $scope.getApp();

任何帮助将不胜感激!

谢谢!

最诚挚的问候,

和Sandeep

3 个答案:

答案 0 :(得分:1)

如果前两个是对返回promise的服务的调用,它看起来就像是。你能否在.Then()?

中调用该函数

示例:

$scope.functionOne(){
  CallToService().then(function(data){
  //Success call Function 2
   $scope.functionTwo(data);
 },function Error(){
   //Error/
 }
};


$scope.functionTwo(){
  CallToService2().then(function Success(data){
    //Call function 3
    $scope.function3(data);
  },
  function Error(){
  //Error
  }
}

答案 1 :(得分:0)

如果您需要初始化某些内容,可以考虑使用config,或运行:

angular.module('myModule', []).
config(function(injectables) { 

}).
run(function(injectables) { 

});

在此处查看更多内容:https://docs.angularjs.org/guide/module

答案 2 :(得分:0)

这是因为服务是异步调用的。您可以链接承诺并返回下一个服务中所需的值,依此类推......

getConfig.then(function (d) {
  return d.data;
}, function (error) {
  
}).then(function(res){ 
  // Call second service with value returned from first service
}).then(function(res){
  // Call third service with value returned from second service
})