2016-08-10 6 views
0

Я создал базовое приложение для изучения маршрутизации angularJs. Когда я печататься $routes.route на консоль браузера, это то, что я видел:

enter image description here

И это моя конфигурация маршрута:

almRequirement.config(function($routeProvider) { 
    $routeProvider.when('/', { 
     templateUrl : 'home.html', 
     controller : 'homeController' 
    }).when('/addRequirement', { 
     templateUrl : 'addRequirement.html', 
     controller : 'addRequirementController' 
    }).when('/addModule', { 
     templateUrl : 'addModule.html', 
     controller : 'addModuleController' 
    }).when('/addContraint', { 
     templateUrl : 'addContraint.html', 
     controller : 'addContraintController' 
    }).when('/viewRequirement', { 
     templateUrl : 'viewRequirement.html', 
     controller : 'viewRequirementController' 
    }).when('/updateRequirement/:reqId', { 
     templateUrl : 'updateRequirement.html', 
     controller : 'updateRequirementController' 
    }).when('/viewParticularRequirement/:reqId', { 
     templateUrl : 'viewParticularRequirement.html', 
     controller : 'viewParticularRequirementController' 
    }); 
}); 

Каждый URL сконфигурирован в $routeProvider.config() показан twice.Can кто объясните мне, почему это так?

Возможно, это поможет мне отладить мое приложение в следующий раз.

+0

Может быть, это печать из каждого впрыскивается контроллера? Вряд ли, я бы добавил. –

+0

Кажется, что каждый параметр уникален. Тем не менее, некоторые из них дифференцируются только с помощью косой черты. – TW80000

+0

Вы можете показать свое определение маршрута и где вы печатали маршруты – DMCISSOKHO

ответ

1

Это по дизайну в угловом. $routeProvider.when() добавляет «перенаправление» к указанному пользователем пути, так что с или без конечной косой черты переходит в одно и то же место.

В the source code states:

путь @param {строка} путь маршрута (сравнивается с $location.path). Если $location.path содержит избыточное трейлинг-косая черта или отсутствует один, маршрут по-прежнему будет соответствовать, и
$location.path будет обновлен, чтобы добавить или отменить трейлинг-косую черту, чтобы точно соответствовать определению маршрута.

А вот source code for when() демонстрирует, что (мой /**** comments ****/ добавил):

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

    /**** Add route as user specified it ****/ 

    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 + '/'; 

     /**** Add route with/added or stripped ****/ 

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

    return this; 
    }; 
+0

Что вы подразумеваете под «' $ routeProvider.when() 'добавляет перенаправление ..."? Все указанные пользователем пути являются перенаправлением, не так ли? –