无法打印controller.js提取的数据

时间:2017-03-10 19:00:40

标签: javascript mongodb mean-stack meanjs

我是新手,我正在尝试制作虚拟联系人列表。 我打印了从mongodb获取数据的日志,我可以在浏览器控制台中看到正确的数据,但是当我尝试在html文件中打印它时,它没有显示。

以下是摘录:

controller.js

var myApp = angular.module('myApp', []);
myApp.controller('AppCtrl', ['$scope', '$http', function($scope, $http){
$http.get('/contactlist').then(function(response){
console.log("I got the response");
console.log(response); //able to see correct data is fetched in the browser console
$scope.contactlist=response;
});
}])

我尝试打印此数据的表格:

<tbody>
    <tr ng-repeat="Contact in contactlist">
        <td>{{Contact.name}}</td>
        <td>{{Contact.email}}</td>
        <td>{{Contact.number}}</td>
    </tr>
</tbody>

请解释出现了什么问题。

控制台中显示的响应: enter image description here

1 个答案:

答案 0 :(得分:1)

JavaScript始终是同步的。那么这里发生了什么,$scope.contactlist=response;正在$http.get('/contactlist')...完成之前执行。这意味着,$scope.contactlist未定义。要解决这个问题, 我建议使用Service

var myApp = angular.module('myApp', []);
myApp.controller('AppCtrl', ['$scope', 'dataService', function($scope, dataService){

  dataService.contactLists(function(response) {
    console.log(response.data);
    $scope.contactlist=response.data;
  });

});
}])

myApp.service('dataService', function($http) {
    this.contactLists = function(callback){
   $http.get('/contactlist').then(callback)
  }
});