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 $urlRouterProviderbenzer bir kod enjekte etmeniz ve oluşturmanız gerekir :
$urlRouterProvider.otherwise('/otherwise');
/otherwiseUrl 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 urlseçeneğin değeriyle eşleşmeli mi?
Tümünü yakala sözdizimini ( ) $stateProviderkullanarak 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 changemı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/angularjsSınıfın en son sürümü UrlRouterProviderkullanımdan kaldırıldı olarak işaretlendi . Şimdi UrlServicebunun 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-routehakkında sorular sorulur ui-router. Kabul edilen cevap , modülü gerektiren "monolitik" kullanır (ancak modüle ihtiyaç duyar )$routeProviderngRouteui-routerui.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)