我在 AngularJS 的controller.js
文件中有这段代码:
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)
我怎么能做到这一点而不为此编写另一个函数?
我建议你将$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.";
});
}]);