AngularJS UI-Router:从组件内部获取$ state.current

时间:2017-08-04 20:01:52

标签: javascript angularjs angular-ui-router angularjs-components

我正在使用AngularJS 1.5.1和ui-router 0.3.1

我试图从组件内的控制器获取当前状态。我需要根据当前状态在我的组件的模板html中做一些事情。但是,我似乎无法从组件的控制器内部“读取”$state.current

我有一个leftnav组件使用ui-sref将内容加载到页面上的视图中,如此(简化):

                        

leftnav组件有一系列链接,如下所示:

<a href="" ui-sref="buttons">Buttons</a>

这会将我的“按钮”模块中的路线加载到上面的ui-view

如果我尝试记录组件控制器中当前状态的任何内容:

console.log($state.href($state.current));
console.log($state.get($state.current));

我只获得null

但是,如果我在buttons控制器中使用相同的内容,它会按预期工作。

如何从组件内部访问$ state.current?

我的组件是这样的:

 (function () {
  'use strict';
  angular.module('app').component('pbDsLeftnav', {
    bindings: {},
    controllerAs: 'ctrl',
    templateUrl: 'core/directives/pb-ds-leftnav.component.html',
    controller: function ($log, $rootScope, $state, $stateParams) {
      var _this = this;
      console.log($state.href($state.current));
      console.log($state.get($state.current));
      console.log($state.current.data);
    }
  });
})();

正如我所说,在“按钮”控制器中记录相同的内容工作:

 (function () {
  'use strict';

  angular.module('pb.ds.badges').controller('BadgesController', function ($log, $state) {
    var _this = this;
    console.log($state.href($state.current));
    console.log($state.get($state.current));
    console.log($state.current.data);
})();

0 个答案:

没有答案