加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS $routeProvider是否有一种简单的方法来让多条路由具有

发布时间:2020-12-17 17:16:17 所属栏目:安全 来源:网络整理
导读:我有两个路由通向相同的视图和控制器(即我只是传入一个id来访问$routeParams并在其上执行控制器逻辑): $routeProvider .when('/about',{ controller: 'AboutController',controllerAs: 'vm',templateUrl: 'about.html' }) .when('/about/:id',templateUrl:
我有两个路由通向相同的视图和控制器(即我只是传入一个id来访问$routeParams并在其上执行控制器逻辑):

$routeProvider
        .when('/about',{
            controller: 'AboutController',controllerAs: 'vm',templateUrl: 'about.html'
        })
        .when('/about/:id',templateUrl: 'about.html'
        });

这感觉非常重复.有没有任何速记,像这样?

$routeProvider
            .when(['/about','/about/:id'],{
                controller: 'AboutController',templateUrl: 'about.html'
            })

解决方法

From $routeProvider source code,在我看来,这是不可能的. this.when方法接受两个参数,路径和路径.对于多路径,this.when应该接受路径数组作为参数,或从单个字符串中提取多个路径.我在这种方法中没有看到这两个中的任何一个.

this.when = function(path,route) {
    //copy original route object to preserve params inherited from proto chain
    var routeCopy = angular.copy(route);
    if (angular.isUndefined(routeCopy.reloadOnSearch)) {
      routeCopy.reloadOnSearch = true;
    }
    if (angular.isUndefined(routeCopy.caseInsensitiveMatch)) {
      routeCopy.caseInsensitiveMatch = this.caseInsensitiveMatch;
    }
    routes[path] = angular.extend(
      routeCopy,path && pathRegExp(path,routeCopy)
    );

    // create redirection for trailing slashes
    if (path) {
      var redirectPath = (path[path.length - 1] === '/')
            ? path.substr(0,path.length - 1)
            : path + '/';

      routes[redirectPath] = angular.extend(
        {redirectTo: path},pathRegExp(redirectPath,routeCopy)
      );
    }

    return this;
  };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读