2017-12-18 6 views
0

ページの読み込み時に、データベースからデータを取得し、$scope.xに配置します。私のネットワークタブでは、データベースからリストを取得しますが、すぐにドロップダウンリストに必要な変数には、ng-repeatを使用してロードされません。しかし、ページが読み込まれた後、データを取得して$scope.xに配置するボタンをクリックすると、すでに値が取得されています。私が好きなことをすると、ページの読み込み時に値を取得せず、変数にデータを取得するボタンをクリックするだけで、何も得られません。私は間違って何をしています。以下は私のコードです:データベースからのデータが、ページロード時の変数にロードされていません。

$scope.addProject = function() { 
    debugger; 
    console.log($scope.clientList); 
    console.log($scope.userList); 
}; 

$scope.getClients = function() { 
    debugger; 
    $http.get('/Clients/GetClients') 
     .then(function (response) { 
      $scope.clientList = response.data; 
     }); 
}; 

$scope.getAllUsers = function() { 
    debugger; 
    $http.get('/User/GetAllUsers') 
     .then(function (response) { 
      $scope.userList = response.data; 
     }) 
}; 

$scope.getClients(); 
$scope.getAllUsers(); 
$scope.addProject(); 

答えて

3

などのデータ、データがサーバーから返される前に、addProject関数が呼び出されているを取得する必要があります。

は約束を返すためにgetClientsgetAllUsers機能を変更します。

$scope.addProject = function() { 
    debugger; 
    console.log($scope.clientList); 
    console.log($scope.userList); 
}; 

$scope.getClients = function() { 
    debugger; 
    ̲r̲e̲t̲u̲r̲n̲ $http.get('/Clients/GetClients') 
     .then(function (response) { 
      $scope.clientList = response.data; 
     }); 
}; 

$scope.getAllUsers = function() { 
    debugger; 
    ̲r̲e̲t̲u̲r̲n̲ $http.get('/User/GetAllUsers') 
     .then(function (response) { 
      $scope.userList = response.data; 
     }) 
}; 

そして、約束を待つ$q.allを使用します。

var clientsPromise = $scope.getClients(); 
var allUsersPromise = $scope.getAllUsers(); 

$q.all([clientsPromise, allUsersPromise]) 
    .then(function() { 
    $scope.addProject(); 
}); 
+0

angular.js:14642 ReferenceError:$ qが定義されていません。 –

+0

'$ http'サービスを注入したのと同じ方法で' $ q'サービスをコントローラに注入する必要があります。 – georgeawg

+0

うわー!それはうまくいった!元のコードでもうまくいかなかった理由を説明してください。なぜ$ q.allや約束を追加する必要がありますか? –

0

あなたはこの

var getclients= function(){ 

    debugger; 
    console.log($scope.clientList); 
    console.log($scope.userList); 
}; 


getclients(); 
+0

私は$ scope.getClients()と$スコープを呼び出しています。ページのgetAllUsers()はすでに読み込み済みです。私のコードを確認してください、それはコードの最後です。 –

+0

@stackquestions、$ scope.getClients()の代わりにgetClients()を使用しなければなりません。 – Vinoth

+0

あなたの提案を適用すると、addProjectsは呼び出されません。私の更新されたコードを見てください。 –

関連する問題