2014-02-07 52 views
0

我有這樣的代碼在我controller.js文件中AngularJS:傳遞可選參數我controller.js在AngularJS

app.controller('MetaDetailGroupList', ['$scope', '$http', function($scope, $http) { 
     $http.get(Routing.generate('meta-detail-group-list')).success(function(data) { 
      $scope.MetaDetailGroup = data; 
      $scope.orderProp = 'name'; 
      $scope.currPage = 0; 
      $scope.pageSize = 10; 

      $scope.totalMetaDetailGroup = function() { 
       return Math.ceil($scope.MetaDetailGroup.entities.length/$scope.pageSize); 
      }; 

     }).error(function(data, status, headers, config) { 
      $scope.MetaDetailGroup.message = "Ocurrieron errores al procesar los datos, por favor vuelva a intentarlo."; 
     }); 
    }]); 

我用這個功能來構建項目的列表,它工作正常。其中一些項目均具有parent >> children關係,所以我需要再次調用相同的功能,但這次傳球和ID作爲可選參數,以獲得正確的兒童,因此唯一的變化是這一行:

From: $http.get(Routing.generate('meta-detail-group-list')).success(function(data) 

To: $http.get(Routing.generate('meta-detail-group-list' + '/'+id)).success(function(data) 

我怎麼能不用爲此寫另一個函數呢?

回答

1

我建議你移動你的$ HTTP調用的服務和處理存在的ID處理的東西:

app.service('MetaDetailGroupListService',function($http) { 
    return { 
     metaDetailGroupList : function(_id) { 
      var _s = (typeof _id === 'undefined') ? 
       'meta-detail-group-list' : 
       'meta-detail-group-list' + '/' + _id; 
      return $http.get(Routing.generate(_s)); 
     } 
    } 
}); 

app.controller('MetaDetailGroupList', ['$scope', 'MetaDetailGroupListService', 
function($scope, MetaDetailGroupListService) { 
    MetaDetailGroupListService.metaDetailGroupList(id).success(function(data) { 
     $scope.MetaDetailGroup = data; 
     $scope.orderProp = 'name'; 
     $scope.currPage = 0; 
     $scope.pageSize = 10; 

     $scope.totalMetaDetailGroup = function() { 
      return Math.ceil($scope.MetaDetailGroup.entities.length/$scope.pageSize); 
     }; 

    }).error(function(data, status, headers, config) { 
     $scope.MetaDetailGroup.message = "Ocurrieron errores al procesar los datos, por favor vuelva a intentarlo."; 
    }); 
}]);