具有隐藏功能的AngularJS自定义指令

时间:2015-02-24 01:52:10

标签: javascript angularjs angularjs-directive

我正在尝试创建一个AngularJS自定义指令,如果它在一个变量中,它会隐藏一个元素。

例如,我有三个从指令生成的链接:

  • 主页
  • 关于
  • 隐藏

我想隐藏“隐藏”链接。

以下是我的观点:

<ul>
  <menu link="Home"></menu>
  <menu link="About"></menu>
  <menu link="Hide"></menu>
</ul>

...指令:

app.directive('menu', function() {
    return {
      scope: {
          link: "@"
      },
      template: '<li ng-hide="hideMenu(link)">{{link}}</li>',
      controller: function($scope) {
        var hideLink = 'Hide';
        function hideMenu(link) {
          if (hideLink == link) {
            return true;
          }
        }
      }
    };
});

...and Plunker

谢谢!

2 个答案:

答案 0 :(得分:4)

要使您的功能在模板中可用,它必须在您的范围内。这是更新后的代码:

app.directive('menu', function() {
return {
  scope: {
      link: "@"
  },
  template: '<li ng-hide="hideMenu(link)">{{link}}</li>',
  controller: function($scope) {
    var hideLink = 'Hide';
    $scope.hideMenu = function(link) {
      if (hideLink == link) {
        return true;
      }
    }
  }
};
});

答案 1 :(得分:1)

在指令$scope.hideMenu = hideMenu;

中添加到您的控制器
app.directive('menu', function() {
    return {
      scope: {
          link: "@"
      },
      template: '<li ng-hide="hideMenu(link)">{{link}}</li>',
      controller: function($scope) {
        var hideLink = 'Hide';
        function hideMenu(link) {
          if (hideLink == link) {
            return true;
          }
        }

        $scope.hideMenu = hideMenu;
      }
    };
});