2016-08-11 5 views
0

は私が適切に呼び出し、この方法は私の問題である今、何

$scope.init = function(){   
     console.log($scope.languageFilePath); 
     $http.get($scope.languageFilePath) //languageFilePath contain url 
     .then(function(res){ 
      console.log('scueese');   
      $scope.translate = res.data;   
      console.log($scope.translate.SERVICE); 
      // $scope.eqipment = $scope.translate['COLOR']; 
      //console.log("Data String "+equip); 
      //$scope.eqipment="ghsh" 
     });  
    }; 
    $scope.init(); 

コード

の下が、コードの $scope.translateその実行他の部分を初期化する前に持っています。

私はコード内で何をしなければならないのですか?最初に$scope.translateを初期化すると、ファイルの他のメソッドが呼び出されます。

注: - $ http.get()メソッドは、他のメソッドが実行された後にこのメソッドが呼び出されたときに呼び出され、呼び出されたメソッドの後にthenが実行されます。

+1

私は はあなたがこれを行うことができ、あなたのページに移動しrouteproviderを使用しているインスタンスの言うことができます3つの質問があります。このinitは、あなたのアプリの一部だけ、またはこのスコープだけのものです。以前は他のファンクションコールはありませんか?前に実行されたことは? – DMCISSOKHO

+0

@DMCISSOKHO上記のコードは実行されますが、呼び出された他の関数の後に 'then'条件が呼び出されます。 –

+0

あなたは '$ scope.tinlate'より前に' $ scope.init() 'のコードが呼び出されたことを意味していますか? – AranS

答えて

1

あなたの問題は、コードの$ scope.init後の()の呼び出しを実行する場合は、このように、http.getの約束を使用するように試みることができる:

$scope.init = function(){   
     console.log($scope.languageFilePath); 
     return $http.get($scope.languageFilePath) //languageFilePath contain url 
      .then(function(res){ 
      console.log('scueese');   
      $scope.translate = res.data;   
      console.log($scope.translate.SERVICE); 
     });  
    }; 
    $scope.init().then(function(){ 
     //this code will be executed after the http get... 
}); 

EDIT 1

OPからいくつかのコードを受け取ったら、以下のように.jsファイルを修正してください。http://pastebin.com/mFUWSU0N

このようにして、init()以下のすべてのコードは$ http.getの完了後に実行されます。

+0

私は2つの 'then'を与えなければならないのですか? –

+0

誰に譲る?このようにして、$ http.get($ httpはHTTP要求を実行する約束を使用します)の約束を「連鎖」しています。より簡単には、上記のコードでhttp.get – Luxor001

+0

のコードを実行します。このエラーが発生します。angular.js:12330 'TypeError:プロパティを読み取れません '、' undefinedの ' –

0

はあなたのinitで指名手配機能アウトすべきことがありますあなたも何ができるか

$scope.init = function(){   
     console.log($scope.languageFilePath); 
     return $http.get($scope.languageFilePath) //languageFilePath contain url 
      .then(function(res){ 
      console.log('scueese');   
      $scope.translate = res.data;   
      console.log($scope.translate.SERVICE); 
      myFunc(); 
      myFunc2(); 
     });  
    }; 
+0

私はこのようなコードを変更することはできませんが、私は直接コントロールを持たないui-gridに関連する関数の一部です –

+0

あなたの初期化の前にuiグリッドが初期化されます – DMCISSOKHO

+0

はい変数を初期化する前にUIグリッドを初期化します。 –

0

をそれあなたのコントローラの依存関係作りです。あなたが行うことができますyourpage.html上でアクティブである、あなたのコントローラで、その後

myApp.config(['$routeProvider',function ($routeProvider) { 
    $routeProvider.when('../../goto/yourpage', { 
     templateUrl: '/yourpage.html', 
     controller: 'myController', 
     resolve: { 
      initializeFunction: function($http) { 
       // do some logic you want executed before anything else 
       return $http.get("blablabla").$promise; 
       });  
      } 
     } 
    }); 
}]); 

myApp.controller('myController',function ($scope,initializeFunction) { 
    $scope.possibleReturnFromTheFunction = initializeFunction; 
}); 
関連する問題