我很困惑。很长一段时间以来,我一直使用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;
}
}
};
答案 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