2016-05-01 90 views
0

我想通過id獲取特定的類別。我使用$ http method填充dummyjson數據。我無法做到這一點。我已將ID從我的服務傳遞給控制器​​,但它返回空值。在這裏,我我的代碼通過服務獲取JSON數據

service.js:

(function() { 
    angular.module('myApp') 
     .factory('registerService', function ($http) { 
     var category=[]; 
      return { 
       getAll:function(){ 
        return $http.get('json/dummyJson.json').then(function(response){ 
         category=response.data; 
         return category; 
        }); 
       }, 
       getUser:function(category_id) 
       { 
        for(var i=0;i<category.length;i++){ 
         console.log(category.length); 
         if(category[i].id === parseInt(category_id)){ 
          return category[i]; 
         } 
        } 
        return null; 
       } 


      } 
     }); 
})(); 

controller.js:

(function() { 
     angular.module('myApp').controller('registrationCtrl1', function ($scope, $stateParams, registerService) { 
      console.log('inside registerCtrl2'); 
      $scope.categoryName=registerService.getUser($stateParams.category_id); 
      console.log($stateParams.category_id); 
      console.log($scope.categoryName); 
     }); 
    })(); 
+0

'回報類[1]。姓名。你正在返回整個對象。 –

+0

你還檢查'$ stateParams.category_id'值是否爲空並傳遞給service?最重要的觀察是你如何保持'category'數組。最可能是null。 –

回答

0

你假設category將在getUser具有價值,但不會發生。填充類別的唯一地方是getAll,但由於您未調用getAll,因此未填充類別。 Chnage你的方法如下,它會工作:

getUser: function(category_id) { 
    return $http.get('json/dummyJson.json').then(function(response){ 
    category=response.data; 
    for(var i=0;i<category.length;i++) { 
     console.log(category.length); 
     if(category[i].id === parseInt(category_id)){ 
     return category[i]; 
     } 
    } 

    return null; 
}); 
} 

因爲你的方法現在返回一個承諾,你需要處理的回調承諾在您的控制器:

angular.module('myApp').controller('registrationCtrl1', function ($scope, $stateParams, registerService) { 
     console.log('inside registerCtrl2'); 
     registerService.getUser($stateParams.category_id) 
     .then(function (response) { 
      $scope.categoryName= response; 
      console.log($stateParams.category_id); 
      console.log($scope.categoryName); 
     }); 
    }); 
+0

這是很好的catch。但是OP聲明'$ stateParams.category_id'是null,它在參數中傳遞。 –

+0

是的。如果你沒有在你的狀態帕拉姆 –

+0

沒有通過ID它也會是這種情況它不工作,它會返回空值。 – sharvari

相關問題