javascript - AngularJs : Attach a stateParams value to custom data in state objects

标签 javascript angularjs angular-ui-router

我正在按照建议在我的状态对象中定义页面标题 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},
  });

我还可以使用属性resolve:

resolve: { title: '项目页面标题' },

对于 stateParams 值,我可以这样做:

resolve:{
    pageTitle: ['$stateParams', function($stateParams){
      return $stateParams.name;
    }]
}

然后console.log($state.current.resolve.pageTitle);在我的 Controller 中将返回整个函数而不是结果。

正确的方法是什么?

更新:

我没有提到的是,我使用 AngularJs 和 ES6,并且使用模块化架构。 因此,每个组件都有自己的范围。

你可以查看我之前的post更好地了解我正在使用的模块化架构。

我正在构建一个面包屑来抓取父状态(使用定义的 pageTitle)。 因此在每个模块中定义页面标题名称就完美了。

因此我可以决定页面标题是固定值“我的页面标题”还是 stateParams 值。

也许这是完全错误的,不应该这样做。如果确实如此,请告诉我。

最佳答案

如果您使用像您的示例这样的解析:

resolve:{
    pageTitle: ['$stateParams', function($stateParams){
        return $stateParams.name;
    }]
}

您需要将 pageTitle 注入(inject) Controller :

angular.module('app').controller('controller', [
             'pageTitle',
    function (pageTitle) {

    }
]);

但我不明白这与注入(inject) $stateParams 有什么不同:

angular.module('app').controller('controller', [
             '$stateParams',
    function ($stateParams) {

    }
]);

关于javascript - AngularJs : Attach a stateParams value to custom data in state objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35502801/

相关文章:

javascript - 带有 $state.go 和 $scope 的参数

javascript - 内联输入类型 ="submit"按钮似乎与 onclick 重叠

html - 尝试在 html 模板中显示 GIF 时引发错误

javascript - 如何使用 angularjs 变量在jsp页面中动态更改脚本标签的路径? (可能重复)

javascript - 如何在 AngularJS 中加载 View 变量之前检测浏览器返回?

javascript - Angular:根据服务方法调用设置路由

javascript - 使用 File API polyfill 读取数据 URL

javascript - 如何将固定元素的颜色调整为其背景元素的颜色?

javascript - jQuery .click() 事件仅在另一个 .click() 事件内触发一次

javascript - 为什么没有填充 ngRepeat