2017-02-13 6 views
0

私はそれらの間でデータを共有する複数の機能を持つ角度コントローラを持っています。問題は、関数1から返されたデータが関数2で使用され、関数2で返されたデータが関数3で使用されています。私の問題は関数2が関数3を最初に実行し、データが見つからないと言うことです最初に実行するために関数1をスケジュールする方法があります。続きページがロードされると即座に角張ったJS関数を実行する方法

を参照のための私のコードです:私はデータを使用したい

$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(); 

任意の助けをいただければ幸いです!

ありがとうございました!

よろしく、

サンディープ

答えて

1

の場合最初の2つは約束を返すサービスへの呼び出しです。 .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 
    } 
} 
+0

...約束をチェーンし、その次のサービスに必要な値を返すことができます2は常にスコープが定義されていないと言います。私は正確にどこに間違っているのか分かりません – Marshall

0

あなたが何かを初期化する必要がある場合は、設定を使用して検討し、または実行することができます:

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

}). 
run(function(injectables) { 

}); 

はもっとここを参照してください:https://docs.angularjs.org/guide/module

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 
 
})

+0

だから、あなたが言ったように関数を実行することができますが、関数が最初に実行されるのを見ても、スコープはそれが未定義であると言います次の機能 – Marshall

+0

@Sandeepどのように正確にそれを行ったか教えていただけますか? –

+0

$ scope.getApp = function(){** Read(); ** //ここで関数1を呼び出します。 var sub = { "RID":$ scope.RID } var App = ServiceName.getApp(sub) ; App.then($ scope.LID = d.data.BUser; }、関数(エラー){ $ log.error( 'アプリケーションのデフォルトを取得中に何か問題が発生しました'); }); } $ scope.getApp(); – Marshall

関連する問題