2013-04-05 139 views
0

这是关于angularjs服务的基本问题。Angularjs服务数据更新

我创建了一个非常简单的应用程序,它具有以下代码。当它'$ http.get',我实际上得到的数据(甚至getData.php也返回有效的JSON)。但是数据永远不会更新到testCtrl。不确定我是否在做一些非常愚蠢的事情,成为Angularjs的新手。

但是,如果我摆脱了服务并在控制器中添加http.get,数据将被检索并更新为视图。

function testCtrl($scope, $http) { 
     $http.get('/test/app/data/getData.php').success(function(data) { 
       $scope.people = data.people; 
     }); 
} 

与服务一起使用的代码的基本问题是什么?

顺便说一句,我的HTML非常简单,它以简单的表格格式显示这些信息。

回答

1

请你的代码改写为如下,

angular.module('testService', []). 
factory('svcTest', function($http){ 
    var myService = 
     { 
      getPeopleInfo: function() 
      { 
       return $http.get('/test/app/data/getData.php') 
      } 
     }; 
    return myService; 
}); 

function testCtrl($scope, svcTest) { 
    var peoplesPromise = svcTest.getPeopleInfo(); 
    peoplesPromise.success(function(data){ 
     $scope.people = data.people 
    }) 

} 

$http返回一个承诺的对象,这将有successerror回调,我们可以听。

获得控制器内部的承诺并附加回调,让我们可以访问控制器的范围(testCtrl)。然后从回调内部,我们正在用来自请求的响应更新testCtrlpeople属性。

+0

感谢您回答我最基本的问题。 – sudhr 2013-04-05 06:34:18