2014-01-09 80 views
-1

問題是當我使用$ http或$資源檢索數據時,它成功地檢索並綁定到視圖,但是當我使用承諾數據來到客戶端但它不綁定到風景。 這裏是我的代碼: //視圖使用承諾在http請求中的角度

<div class="pull-left span6" > 

<h3>{{Name}}</h3> 

<ul> 
    <li ng-repeat="type in typeList"> 
     <span>{{type.Title}}</span> 
    </li> 
</ul> 

//控制器

var proxyControllers = angular.module('httpProxyControllers', []); 

proxyControllers.controller('TypeListController', 
function TypeListController($scope, typeListData) { 
    $scope.Name = 'Type List Addresses'; 
    $scope.typeList = typeListData.getTypeList(); 

    $scope.typeList.then(function(data){ 
     console.log('data received'); 
     console.log(data); 
    },function(status){ 
     console.log(status); 
    }); 
}); 

//服務

var proxyServices = angular.module('httpProxyServices', ['ngResource']); 


proxyServices.factory('typeListData' , function($http, $q){ 
    return{ 
     getTypeList : function(){ 
      var deferred = $q.defer(); 
      $http({method : 'GET' , url: '/data/getTypeList'}) 
       .success(function(data, status, headers, config){ 
        deferred.resolve(data); 
       }) 
       .error(function(data, status, headers, config){ 
        deferred.reject(status); 
       }); 

      return deferred.promise; 
     } 
    } 
}); 

在然後控制器的塊時我登錄數據到控制檯,它顯示數據成功返回,但沒有任何事情發生我的觀點和我的觀點實際上沒有任何顯示

在此先感謝,

回答

0

您需要分配給data$scope.typeList

//initialize with empty array 
$scope.typeList = []; 

typeListData.getTypeList().then(function(data){ 

    //initialize with received data 
    $scope.typeList = data; 

    console.log('data received'); 
    console.log(data); 
},function(status){ 
    console.log(status); 
}); 
+0

您好,感謝您的快速回復,您的答案是正確的。然而,如果我有義務在接收到的數據塊中設置typeList,那麼如果我發送回調方法而不使用promise,有什麼區別?據我記憶,我在視頻中看到他實際上沒有使用方法,他提到這個承諾會被綁定到視圖中,並且在演示中它工作得很好。再次感謝。 – ali

+0

在教程中你看到他可能使用$ resourse而不是$ http。 –

+0

@ali,對不起有時候離線。我同意@MohammadSepahvand可能你看到使用'$ resourse'而不是'$ http',因爲我從來沒有使用'$ http'這樣的 – Satpal