将可选参数传递给我的控制器.js在 AngularJS 中



我在 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.";
    });
}]);

最新更新