来自数据库的数据未使用角度加载到页面加载时的变量

来自数据库的数据未使用角度加载到页面加载时的变量

问题描述:

在页面加载时,我从数据库中获取数据并将其置于$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(); 

数据从服务器返回之前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

'$ q'服务需要注入到控制器中,就像注入'$ http'服务一样。 – georgeawg

+0

哇!这工作!你能解释为什么它在我的原始代码上不起作用吗?为什么我们需要添加$ q.all或承诺? –

你应该得到这样的

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。请参阅我的更新代码。 –