带有隐藏函数的AngularJS自定义指令

AngularJS custom directive with hide function

本文关键字:AngularJS 自定义 指令 函数 隐藏      更新时间:2024-04-03

我正在尝试创建一个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;
          }
        }
      }
    };
});

和Plunker。

谢谢!

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

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;
      }
    }
  }
};
});

在指令$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;
      }
    };
});