Angle-ui-routerを使用して、 otherwise method on $ stateProvider を使用するにはどうすればよいですか?
$stateProvider
のみを使用することはできません。
$urlRouterProvider
を挿入し、次のようなコードを作成する必要があります。
$urlRouterProvider.otherwise('/otherwise');
/otherwise
urlは通常どおり状態で定義する必要があります。
$stateProvider
.state("otherwise", { url : '/otherwise'...})
このリンクを参照してください ksperlingは説明します
catch all syntax($stateProvider
)を使用して、"*path"
でできます。リストの下部に次のような状態設定を追加するだけです。
$stateProvider.state("otherwise", {
url: "*path",
templateUrl: "views/error-not-found.html"
});
すべてのオプションは https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters で説明されています。
$urlRouterProvider.otherwise(...)
とは対照的に、このオプションの良いところは、場所の変更を強制されないことです。
また、otherwise関数に$ stateを手動で挿入することもできます。これにより、非URL状態に移動できます。これには、ブラウザがアドレスバーを変更しないという利点があり、前のページに戻る処理に役立ちます。
$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+'"'
});
});
わかりました、あなたが尋ねた質問がサンプルコードの最初の行で既に答えられていることに気づいた愚かな瞬間!サンプルコードをご覧ください。
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 !
....
既に提供されている素晴らしい答えに耳を傾けたいだけです。 @uirouter/angularjs
の最新バージョンは、クラスUrlRouterProvider
を非推奨としてマークしました。代わりにUrlService
を使用することをお勧めします。次の変更により同じ結果を得ることができます。
$urlService.rules.otherwise('/defaultState');
追加の方法: https://ui-router.github.io/ng1/docs/1.0.16/interfaces/url.urlrulesapi.html
受け入れられた答え 参照angular-route
はui-router
について尋ねます。受け入れられた答えは "monolithic"$routeProvider
を使用します。これにはngRoute
モジュールが必要です(一方、ui-router
にはui.router
モジュールが必要です)
最高評価の回答 は代わりに$stateProvider
を使用し、.state("otherwise", { url : '/otherwise'... })
のようなことを言っていますが、 ドキュメントitで「そうでなければ」の言及を見つけることができませんリンク 。ただし、$stateProvider
が言及されていることがわかります この回答では
$stateProvider
のみを使用することはできません。$urlRouterProvider
を挿入する必要があります
それが私の答えがあなたを助けるかもしれないところです。私にとっては、$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');
//...
}]);
私の提案はui-router
documentation 、( この特定のリビジョン )と一致しており、.when(...)
メソッド(関数の最初の呼び出し):
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');
})