如何在自定义指令中获取$ routeParams

时间:2014-11-12 10:33:49

标签: angularjs angularjs-directive

我正在创建一个navBar指令,我想使用$ routeParams来确定要设置为活动的链接。我可以在控制器中访问$ routeParams而没有问题:

app.controller('MovieDetailsController', ['$scope', '$http', '$routeParams', function ($scope, $http, $routeParams) {
        $scope.movie = {};
        console.log($routeParams);
    }]);

但是,我无法在我的指令中从$ routeParams获取任何数据:

app.directive('navBar', ['$routeParams', function ($routeParams) {
        console.log($routeParams);
    }]);

我做错了什么?

2 个答案:

答案 0 :(得分:6)

似乎初始化指令时$ routeParams不可用。如果您使用下面的指令,就像在plunk中一样,它应该可以工作。

app.directive('myDir', ['$routeParams', function ($routeParams) {
    return {
      restrict: 'A',
      link: function(scope, element, attrs) {
        element.bind('click', function() {
          alert($routeParams.number);
        });
      }
    }
  }]);

http://plnkr.co/edit/joHLLqtsUK3xCAVemmeg?p=preview

答案 1 :(得分:2)

尝试使用ui路由器的$state.current.name,它会为您提供当前的route