Можно ли установить маршрут с дополнительными параметрами (тем же шаблоном и контроллером, но некоторые параметры следует игнорировать, если они не существуют?
Таким образом, вместо написания следующих двух правил, есть только одно?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
Как то так ([этот параметр необязательный])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
Я не мог найти ничего в их документации.
angularjs
angularjs-routing
Александру Р
источник
источник
[]
) в версии 1.1.5.[]
. Смотрите этот коммит: github.com/angular/angular.js/commit/…Ответы:
Похоже, что Angular поддерживает это сейчас.
Из последних (v1.2.0) документов для
$routeProvider.when(path, route)
:path
может содержать необязательные именованные группы с вопросительным знаком (:name?
)источник
.when('/claims/documents/:CLAIMS_ID/:DOCUMENT_NAME?'...
он не будет совпадать, если в URL нет косой черты. Так что/claims/documents/1234/
совпадает, но/claims/documents/1234
нет.Как упоминание @ g-eorge, вы можете сделать это так:
Вы также можете сделать столько, сколько вам нужно дополнительных параметров.
источник
Пожалуйста, смотрите ответ @jlareau здесь: /programming/11534710/angularjs-how-to-use-routeparams-in-generating-the-templateurl
Вы можете использовать функцию для генерации строки шаблона:
источник
На самом деле я думаю, что OZ_ может быть несколько правильным.
Если у вас есть маршрут
'/users/:userId'
и перейдите к'/users/'
(обратите внимание на завершающий /),$routeParams
в вашем контроллере должен быть объект, содержащийuserId: ""
в 1.1.5. Нет, параматерuserId
не полностью игнорируется, но я думаю, что это лучшее, что вы получите.источник