否则在StateProvider上

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了否则在StateProvider上相关的知识,希望对你有一定的参考价值。

使用angular-ui-router,如何在otherwise method上使用$stateProvider或者我该如何使用它?

答案

你不能只使用$stateProvider

你需要注入$urlRouterProvider并创建一个类似于的代码:

$urlRouterProvider.otherwise('/otherwise');

/otherwise网址必须像往常一样在一个州定义:

 $stateProvider
    .state("otherwise", { url : '/otherwise'...})

查看ksperling explains的链接

另一答案

您可以使用$stateProvider使用catch all语法("*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(...)相反,这个选项的好处是你不会被迫改变位置。

另一答案

您还可以手动将$ 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 ! 


          ....

Take a look here.

另一答案

我只想谈谈已经提供的重要答案。最新版本的@uirouter/angularjs将该类UrlRouterProvider标记为已弃用。他们现在推荐使用UrlService。您可以通过以下修改获得相同的结果:

$urlService.rules.otherwise('/defaultState');

其他方法:https://ui-router.github.io/ng1/docs/1.0.16/interfaces/url.urlrulesapi.html

另一答案

accepted answer引用angular-route询问ui-router。接受的答案使用"monolithic" $routeProvider,这需要ngRoute模块(而ui-router需要ui.router模块)

highest-rated answer使用$stateProvider代替,并说像.state("otherwise", { url : '/otherwise'... }),但我在documentation it links中找不到任何“否则”的提及。但是,我看到$stateProvider被提到in this answer,它说:

你不能只使用$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 documentationthis specific revision)一致,其中包括类似使用.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');
})

以上是关于否则在StateProvider上的主要内容,如果未能解决你的问题,请参考以下文章

Go语言入门150题L1-065 嫑废话上代码 (5 分) Go语言 | Golang

更新github上代码

idea如何远程调试线上代码

git回滚线上代码

phpstorm线上代码同步(转)

使用github上代码要注意啥版权问题