stateParams vs $ stateParams with ui-router?

时间:2015-01-30 13:33:40

标签: angularjs angular-ui-router

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

现在我尝试在解决方案中做同样的事情并且它不起作用。事实上,当我使用stateParams时没有任何反应。

但是我偶然发现我可以在解析中使用$ stateParams并且它可以正常工作。

有人可以告诉我有什么区别,为什么我需要在解析中的templateUrl和$ stateParams中使用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;
            }
        }

    };

1 个答案:

答案 0 :(得分:2)

我已创建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