stateParams vs $stateParams with ui-router?

stateParams vs $stateParams with ui-router?

我很困惑。很长一段时间以来,我一直在使用 stateParams 作为在 templateUrl 中找出 stateParams 的方法。

现在我尝试在解决中做同样的事情,但它不起作用。事实上,当我使用 stateParams 时什么也没有发生。

然而我偶然发现我可以在解析中使用 $stateParams 并且它有效。

谁能告诉我有什么区别,为什么我需要在 templateUrl 中使用 stateParams 而在 resolve 中使用 $stateParams?

   var auth = {
        name: 'auth',
        url: '/Auth/:content',
        templateUrl: function (stateParams) {
            var page = 'app/auth/partials/' + stateParams.content + '.html';
            return page;
        },
        controller: function ($scope, authService) {
            $scope.aus = authService;
        },
        resolve:
        {
            init: function ($stateParams) {
                var x = 99;
                return true;
            }
        }

    };

我创建了 working example here,表明 $statePrams 可以在解析

中访问
// States
$stateProvider
  .state('auth', {
      url: "/auth/:content",
      templateUrl: 'tpl.html',
      controller: 'AuthCtrl',
      resolve : {
        init : ['$stateParams' , function($stateParams){
          return { resolved: true, content: $stateParams.content };
        }]
      }
  })

控制器

.controller('AuthCtrl', ['$scope', 'init', function ($scope, init) { 
  $scope.init = init;
}])

这可能是电话

<a href="#/auth/8">auth/8</a>
<a href="#/auth/xyz">auth/xyz</a>

检查一下here