Nasıl kullanabilir, açısal-ui-yönlendirici kullanma aksi yöntemi üzerinde $ stateProvider veya bunu hiç nasıl kullanabilir?
Nasıl kullanabilir, açısal-ui-yönlendirici kullanma aksi yöntemi üzerinde $ stateProvider veya bunu hiç nasıl kullanabilir?
Yanıtlar:
Sadece kullanamazsınız $stateProvider
.
Aşağıdakine $urlRouterProvider
benzer bir kod enjekte etmeniz ve oluşturmanız gerekir :
$urlRouterProvider.otherwise('/otherwise');
/otherwise
Url her zamanki gibi bir durumu üzerinde tanımlanmalıdır:
$stateProvider
.state("otherwise", { url : '/otherwise'...})
Ksperling'in açıkladığı bu bağlantıya bakın
$stateProvider
. Yönlendirme değil, yalnızca bir şablon görüntülemek istiyorsanız daha az iş. @ Juan-hernandez'in cevabını tercih ederim.
otherwise
(bu durumda '/otherwise'
) eyaletin adıyla (ilk parametre .state
) veya url
seçeneğin değeriyle eşleşmeli mi?
Tümünü yakala sözdizimini ( ) $stateProvider
kullanarak yapabilirsiniz . Listenizin alt kısmına aşağıdaki gibi bir durum yapılandırması eklemeniz yeterlidir:"*path"
$stateProvider.state("otherwise", {
url: "*path",
templateUrl: "views/error-not-found.html"
});
Tüm seçenekler https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters adresinde açıklanmıştır .
Bunun tersine bu seçeneğin güzel yanı, $urlRouterProvider.otherwise(...)
yer değiştirmeye zorlanmamanızdır.
you're not forced to a location change
mısınız :?
/this/does/not/exist
, URL adres çubuğunda bu şekilde kalacaktır. Diğer çözüm sizi /otherwise
Ayrıca, $ state işlevini aksi halde işleve manuel olarak enjekte edebilirsiniz, daha sonra url olmayan bir duruma gidebilirsiniz. Bu, tarayıcının adres çubuğunu değiştirmemesi avantajına sahiptir, bu da önceki bir sayfaya geri dönmenin işlenmesi için yararlıdır.
$urlRouterProvider.otherwise(function ($injector, $location) {
var $state = $injector.get('$state');
$state.go('defaultLayout.error', {
title: "Page not found",
message: 'Could not find a state associated with url "'+$location.$$url+'"'
});
});
Ben sadece zaten verilmiş olan harika cevaplardan haberdar olmak istiyorum. @uirouter/angularjs
Sınıfın en son sürümü UrlRouterProvider
kullanımdan kaldırıldı olarak işaretlendi . Şimdi UrlService
bunun yerine kullanmanızı tavsiye ediyorlar . Aşağıdaki değişiklikle aynı sonucu elde edebilirsiniz:
$urlService.rules.otherwise('/defaultState');
Ek yöntemler: https://ui-router.github.io/ng1/docs/1.0.16/interfaces/url.urlrulesapi.html
Tamam, sorduğunuz sorunun örnek kodun ilk satırlarında zaten yanıtlanmış olduğunu fark ettiğiniz o aptal an! Sadece örnek koda bir göz atın.
angular.module('sample', ['ui.compat'])
.config(
[ '$stateProvider', '$routeProvider', '$urlRouterProvider',
function ($stateProvider, $routeProvider, $urlRouterProvider) {
$urlRouterProvider
.when('/c?id', '/contacts/:id')
.otherwise('/'); // <-- This is what I was looking for !
....
Kabul edilen cevap referansları angular-route
hakkında sorular sorulur ui-router
. Kabul edilen cevap , modülü gerektiren "monolitik" kullanır (ancak modüle ihtiyaç duyar )$routeProvider
ngRoute
ui-router
ui.router
En yüksek puan alan cevap$stateProvider
onun yerine kullanıyor ve şöyle bir şey söylüyor .state("otherwise", { url : '/otherwise'... })
, ancak bağlandığı belgelerde "aksi" den herhangi bir şekilde bahsedemiyorum . Ancak, söylediği yerde bu cevapta$stateProvider
bahsedildiğini görüyorum :
Sadece kullanamazsınız
$stateProvider
. Enjekte etmen gerek$urlRouterProvider
Cevabımın size yardımcı olabileceği yer burasıdır. Benim için şöyle kullanmak yeterliydi $urlRouterProvider
:
my_module
.config([
, '$urlRouterProvider'
, function(
, $urlRouterProvider){
//When the url is empty; i.e. what I consider to be "the default"
//Then send the user to whatever state is served at the URL '/starting'
//(It could say '/default' or any other path you want)
$urlRouterProvider
.when('', '/starting');
//...
}]);
Benim önerim tutarlıdır ui-router
belgelere , ( bu spesifik revizyon o benzer kullanımını içerir). when(...)
yöntem (işleve ilk çağrı):
app.config(function($urlRouterProvider){
// when there is an empty route, redirect to /index
$urlRouterProvider.when('', '/index');
// You can also use regex for the match parameter
$urlRouterProvider.when(/aspx/i, '/index');
})
$stateProvider.otherwise
, bu yüzden bana yardımcı olur)