使用查询字符串参数过滤数据

时间:2013-11-26 20:17:45

标签: javascript angularjs url parameters angular-ui-router

我有2个文件:

module.js,代码如下:

angular.module('App.fragments.Jobs', []).
config(['$stateProvider', function($stateProvider) {
    $stateProvider
        .state('jobs', {
            url: '/trabajos',
            templateUrl: '/templates/jobs/list.html',
            controller: 'JobsListCtrl'
        });
}]);

jobs-list-ctrl.js,代码如下:

angular.module('App.fragments.Jobs')
.controller('JobsListCtrl', ['$scope', 'JobsListService', function ($scope, JobsListService) {
    $scope.filter = function() {
        JobsListService.loadJobs($scope.filters, function(_response) {
            console.log(_response.length, "jobs...");
        });
    };

    $scope.filter();
}]);

我通过了解这个问题:lean.domain.com/apps/hub/noop#/trabajos

问题是我想通过我的网址传递params:

我通过 lean.domain.com/apps/hub/noop#/trabajos?param_one=value_one&param_two=value_two ...

访问此内容

然后,使用前面显示的过滤器方法在控制器中取这些值来过滤数据。 像这样:

angular.module('App.fragments.Jobs')
.controller('JobsListCtrl', ['$scope', 'JobsListService', function ($scope, JobsListService) {

    //Parse value_one&param_two=value_two from url
    //and fill $scope.filters with value like
    //{param_one: value_one, param_two: value_two}

    $scope.filter = function() {
        JobsListService.loadJobs($scope.filters, function(_response) {
            console.log(_response.length, "jobs...");
        });
    };

    $scope.filter();
}]);

我了解了$locationui-router and $stateParams,但我不确定最佳方式是做什么的,以及为什么。

1 个答案:

答案 0 :(得分:0)

如果你想提取查询字符串中的内容,你可以这样定位:

对于此网址lean.domain.com/apps/hub/noop#/trabajos?param_one=value_one&param_two=value_two,您可以使用$ location.search()以JavaScript对象格式返回查询字符串。