2016-05-01 93 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

相关问题