how do return the $state.current.name from ui-router statechange

风流意气都作罢 提交于 2019-11-30 03:14:08
Sandeep Shabd

You can listen for '$stateChangeSuccess' and set state accrodingly. For example -

$rootScope.$on('$stateChangeSuccess',
  function(event, toState, toParams, fromState, fromParams) {
    $state.current = toState;
  }
)

As an alternative to Sandeep's solution, you can also do it this way:

angular.module('yourApp').run(['$rootScope', '$state',
    function ($rootScope, $state) {
        $rootScope.$state = $state;
    }
]);

Doing it this way, it only gets set once instead of on every stateChange. Basically you just store a reference to $state somewhere - I chose $rootScope just to keep this example simple.

Now in my code I can easily reference it like:

<div ng-show="$state.includes('accounting.dashboard')"></div>

and

<div>Current State: {{$state.current.name}}</div>

I also generally store $stateParams as well so I have even more information about the state (but I left it out of this example).

You can also try.

.controller('yourApp', function($scope,$state) {
  $scope.state = $state;

Now you can log it in your console.

console.log($state);

It should return the current state you are in.

Or you can call the scope in your html view like this.

{{state.current.name}}

It will also return de state you are in.

If you want to console your state in the controller then you should console like that:

console.log($state.current.name);

And if you want to console it in views then:

In controller :

$scope.state = $state.current.name;

In Template: print like that

{{state}}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!