javascript - 无法根据文档在 Angular ui-router 中访问 $state.current.data

标签 javascript angularjs

我正在尝试动态更新页面标题。

考虑这样定义的状态:

 $stateProvider.state('login', {
        url: '/login',
        templateUrl: '/templates/views/login.html',
        controller: 'AuthCtrl',
        data: {title: 'Log in'}
 }

在页面的 HEAD 部分:

<title page-title></title>

根据to the documentation, I am supposed to be able to access my custom data property :

app.directive("pageTitle", function ($state) {
    return {
        restrict: 'A',
        template: "{{title}}",
        scope: {},
        link: function (scope, elem, attr) {
            scope.title=$state.current.data.title; //wrap this in $watch
            console.log('page state',$state.current.data.title);
        }

    }
});

但这会返回 undefined。有任何想法吗?谢谢!

最佳答案

该变量确实可用于页面,但在您的指令中,您创建了一个 isolated scope .每当你使用 scope: {}指令上的选项,它创建一个仅限于指令的范围。

您有两个选项可以帮助解决这个问题。

  1. 您可以创建没有 scope:{} 的指令选项,这将允许指令完全访问 scope它存在于父页面上。这里的缺点是,这将指令的使用限制为每个范围的单个实例。
  2. 在范围选项中创建绑定(bind)并将变量从 HTML 传递到指令

指令:scope: {title: '=title'}

HTML:<title><page-title title="{{$state.current.data.title}}"></page-title></title>

关于javascript - 无法根据文档在 Angular ui-router 中访问 $state.current.data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897788/

相关文章:

javascript - HTML 在提交时发布特定值

javascript - jQuery 文件上传预览/删除图像无法正常工作

javascript - 使用 lodash 获取数组中的重复对象

javascript - 指令未在 <Enter> 按键上触发

angularjs - 指令 - AngularJS 中的 Controller 数据绑定(bind)

javascript - 表 td 的 onchange 事件?

javascript - URL 链接在 Angularjs 中无法正确重定向

css - 在 Angular Material 的 md-option 上将空白设置为正常

javascript - AngularJS:2 路绑定(bind)的奇怪行为(ng-repeat)

javascript - 将字符串 (150000) 转换为时间 ( hh :mm:ss) in javascript