在角度JS中通过路径传递多个ID

时间:2013-06-14 22:35:26

标签: javascript angularjs

我必须通过路由将多个ID传递给服务。现在路由适用于单个id,但作为角度JS的初学者,我不知道如何传递多个id或 有没有办法可以通过路由传递一系列ID?我被困住并寻求一些帮助

当前路线配置

。当( '/搜索/:ID')

期待

.when('/ search /:id /:id /:id')

或 。当( '/搜索/ IDS []')

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

使用.when('/ search /:id1 /:id2 /:id3')或用逗号或其他字符分隔多个ID。

答案 1 :(得分:0)

这就是我想出的。它绝不是完美的或防弹的,但它是一个开始。

Demo

PS:我只使用相同的控制器来实现方便

app.config(['$routeProvider', function($routeProvider) {
  $routeProvider
   .when('/home:matrix', {templateUrl: 'home.html', controller: 'MainCtrl'})
   .when('/about:matrix', {templateUrl: 'about.html', controller: 'MainCtrl'});
}]);

function extractMatrixParams(matrix) {
  var matrixRegexp = /([^;=]+)=([^;]+)/g;
  var matrixParams = {};
  var match = matrixRegexp.exec(matrix);
  while(match) {
    var p = matrixParams[match[1]];
    if(p) {
      if(angular.isArray(p)) {
        p.push(match[2]);
      }
      else {
        matrixParams[match[1]] = [p, match[2]];
      }
    }
    else {
      matrixParams[match[1]] = match[2];
    }
    match = matrixRegexp.exec(matrix);
  }
  return matrixParams;
}

app.controller('MainCtrl', ['$scope', '$routeParams',
function($scope, $routeParams) {
  var matrixPrams = extractMatrixParams($routeParams.matrix);

  $scope.ids = matrixPrams.ids;
  $scope.myVar = matrixPrams.myVar;
  $scope.matrixPrams = matrixPrams;

  $scope.routeParams = $routeParams;
}]);