AngularJs :将 stateParams 值附加到状态对象中的自定义数据
AngularJs : Attach a stateParams value to custom data in state objects
我正在我的状态对象中定义页面标题,如此处的建议。
$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},
});
我也可以使用属性 resolve :
解决: { 标题: '项目页面标题' },
对于状态参数值,我可以这样做:
resolve:{
pageTitle: ['$stateParams', function($stateParams){
return $stateParams.name;
}]
}
但是,在我的控制器中,console.log($state.current.resolve.pageTitle)将返回整个函数而不是结果。
正确的方法是什么?
更新:
我没有提到的是我在 ES6 中使用 angularJs,并且使用模块化架构。因此,每个组件都有自己的作用域。
您可以查看我之前的帖子,以更好地了解我正在使用的模块化架构。
我正在构建一个面包屑来抓取父状态(使用定义的 pageTitle)。因此,在每个模块中定义页面标题名称将是完美的。
因此,我可以决定页面标题是固定值"我的页面标题"还是状态参数值。
也许这是完全错误的,不应该那样做。如果是这样,请告诉我。
如果您使用类似于示例的解析:
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) {
}
]);
相关文章:
- js,对象's状态监视
- PJAX:记住其他对象状态
- 经典方法的目的|与对象状态的关系
- 历史推送状态不在独立的 location.hash 或 location.href 中,而是在 Location 对象本
- XMLHttpRequest 对象状态代码为 0
- 在 Redux 状态下存储具有原型函数的对象
- 推送嵌套对象时的反应状态更改
- redux 中状态对象的结构
- ajax - 请求对象就绪状态不变
- 如何将状态对象/数据传递给(异步)ajax 回调
- 如何使用UI路由器将对象传递到状态
- Reactjs:在修改对象之前,是否需要复制处于组件状态的对象
- XMLHttpRequest抛出InvalidSateError说“;对象状态必须打开”;
- Web 应用程序需要记住对象状态 - 需要解决方案建议
- 创建根据时间参数计算对象状态的函数
- 在 JavaScript DOJO 中维护对象状态
- 基于对象状态在js/html中动态创建按钮
- 记录对象状态以进行序列化
- 不能访问React对象状态上的object属性,即使它存在.返回未定义
- jquery运行时对象状态维护