我在我的状态对象中定义了一个页面标题,如建议here。
$stateProvider
.state('project', {
url: '/projects/:origin/:owner/:name',
template: '<project></project>',
data : { pageTitle: 'Project page title'},
});
所以我可以稍后以这种方式访问它:
$state.current.data.pageTitle
现在......我想做的是,不要像pageTitle那样使用固定值,而是想访问stateParams。
请注意,以下示例不起作用,这是我希望它工作的方式。
$stateProvider
.state('project', {
url: '/projects/:origin/:owner/:name',
template: '<project></project>',
data : { pageTitle: $stateParams.name},
});
我还可以使用属性解决:
解决:{title:'项目页面标题'},
对于stateParams值,我可以这样做:
resolve:{
pageTitle: ['$stateParams', function($stateParams){
return $stateParams.name;
}]
}
但是然后是console.log($ state.current.resolve.pageTitle);在我的控制器中将返回整个函数而不是结果。
这样做的正确方法是什么?
更新:
我没有提到的是我使用angularJs和ES6,我使用模块化架构。 因此,每个组件都有自己的范围。
您可以查看我之前的post,以便更好地了解我正在使用的模块化架构。
我正在构建一个抓取父状态的痕迹(使用已定义的pageTitle)。 因此,在每个模块中定义页面标题名称将是完美的。
所以我可以决定页面标题是固定值“我的页面标题”还是stateParams值。
也许这是完全错误的,不应该这样做。如果是这样,请告诉我。
答案 0 :(得分:1)
如果你使用像你的例子那样的决心:
resolve:{
pageTitle: ['$stateParams', function($stateParams){
return $stateParams.name;
}]
}
您需要将pageTitle
注入您的控制器:
angular.module('app').controller('controller', [
'pageTitle',
function (pageTitle) {
}
]);
但我不知道这与注入$stateParams
:
angular.module('app').controller('controller', [
'$stateParams',
function ($stateParams) {
}
]);