2013-04-05 120 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