#angularjs
#angularjs
Вопрос:
Я пытаюсь добавить параметр в свое угловое приложение. на самом деле мое приложение будет динамически вызываться как :
"https://abc.ss.com/xx/sn=1234568505
чтобы справиться с этим state
— в моем $stateProvider
— я пытаюсь так:
.state('serialCreateCase', {
url: '/sn=*', //but not working
templateUrl:'abxy.html',
controller: 'controllersss as ctrl',
}
})
Но мой URL не переадресовывает перенаправление на страницу по умолчанию. как добавить =
параметр?
Ответ №1:
Попробуйте это:
.state('serialCreateCase', {
url: '^/sn={id}',
params: {
id: {}
},
templateUrl:'abxy.html',
controller: 'controllersss as ctrl',
}
Это должно соответствовать URL, который вы ожидаете.
Редактировать: ответ был обновлен, чтобы изменить его на требуемые параметры.
Комментарии:
1. Но даже без
id
этого работает,http://localhost:3000/sn=
— действует сейчас. Но я бы хотел, чтобы идентификатор был обязательным2. Также
id
должно быть без специальных символов.3. Я обновил ответ, чтобы включить требуемое значение параметра.
4. Но теперь
id
всегда требуется число. как я могу заставить это принимать как смешиваниеalphabets
, так и числа?abc1234 or 1233ccm
— вот так?5. Вы можете слегка изменить его на «^ / sn ={id}», что не потребует, чтобы оно было целым числом (ответ отредактирован, чтобы отразить это)
Ответ №2:
Вы пробовали это: http://benfoster.io/blog/ui-router-optional-parameters
Параметры запроса
Чтобы параметры запроса отображались в объект $ stateParams маршрутизатора пользовательского интерфейса, вам необходимо объявить их в шаблоне URL вашей конфигурации состояния:
state('new-qs', {
url: '/new?portfolioId',
templateUrl: 'new.html',
controller: function($scope, $stateParams) {
$scope.portfolioId = $stateParams.portfolioId;
}
})
Затем вы можете создать ссылку на это состояние, используя атрибут ui-sref:
<a ui-sref="new-qs({ portfolioId: 1 })">New (query string)</a>
Это приведет к переходу к /new?portfolioId=1 .
Если у вас есть несколько необязательных параметров, разделите их с помощью amp;:
state('new-qs', {
url: '/new?portfolioIdamp;param1amp;param2',
templateUrl: 'new.html',
controller: function($scope, $stateParams) {
$scope.portfolioId = $stateParams.portfolioId;
$scope.param1 = $stateParams.param1;
$scope.param2 = $stateParams.param2;
}
})
Ответ №3:
Вы могли бы добавить параметры следующим образом
state('serialCreateCase', {
url: '/xx?sn',
templateUrl: 'abxy.html',
controller: 'controllersss as ctrl',
}
})
Состояние ref будет
<a ui-sref="serialCreateCase({ sn: 1234568505 })">URL</a>
Комментарии:
1. Например, в моем локальном хосте:
localhost:3000/sn=12345
— нужно обработать. но я попробовал ваш, все равно он переводит меня на страницу по умолчанию