使用$ http服务时模型不更新

时间:2015-09-14 18:23:28

标签: javascript angularjs

我知道为什么它不起作用,但不知道如何解决这个问题,我已经查看了各种类似的问题/答案,但我无法解决我的问题。

我正在尝试在页面加载时调用服务来列出数据表,或者让我们将其称为URL列表。

模型只是{ urls }会返回一个网址数组,以后我会使用ng-repeat。

我的控制器:

function UrlListCtrl($scope, UrlService){
  $scope.urls = UrlService.getUrls();
}

服务:

function UrlService($http) {
  return {
    getUrls: getUrls
  }
  function getUrls() {
    console.log('Fetching Urls...');
    return $http.get('urls/get')
      .then(function(response) {
        console.log('response:', response.data);
        this.urlsResults = response.data;
    });
  }
}

该服务确实运行,但它不会更新视图。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

$http.get()是一个返回promise的异步操作。您必须等待履行此承诺,然后才能从响应中获取数据。

在您的代码$scope.urls = UrlService.getUrls();中分配了承诺,而不是结果$scope.urls,并且在操作结束时视图从未更新过。

控制器:

function UrlListCtrl($scope, UrlService){
  UrlService.getUrls().then(function(response) {
     $scope.urls = response.data;
  });
}

服务:

function UrlService($http) {
  return {
    getUrls: getUrls
  }
  function getUrls() {
    console.log('Fetching Urls...');
    return $http.get('urls/get');
  }
}