2016-04-27 10 views
3

私は(つまり、私はちょうど$ routeParamsにアクセスするためのIDを渡して、その上にコントローラロジックを実行しています)同じビューとコントローラにつながる両方のルートを持っている:

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

これは非常に反復的に感じています。このような何かの略記はありますか?

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

答えて

3

From $routeProvider source codeとは思われません。 this.whenメソッドは、pathrouteという2つのパラメータを受け入れます。複数のパスの場合、this.whenはpathの配列をパラメータとして受け入れるか、または単一の文字列から複数のパスを抽出する必要があります。私はこの方法でこれら2つのうちのどれも見ることはありません。

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; 
    }; 
関連する問題