• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

angularjs 来源:stack questions 12次浏览

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