如何将值传递给指令?

时间:2018-08-13 13:04:54

标签: angularjs

我的html中有一个带有指令的按钮。我想将值传递给该指令:

<md-button class="md-icon-button" minimize-popup mdMenu="$mdMenu">

在我的指令中,我有:

return {
    scope: {
        mdMenu: '='
    },
    link (scope, element, attrs) {
        console.log(scope.mdMenu);

但是日志显示该行未定义。我猜是因为minimize-popupmdMenu=$mdMenu彼此之间没有关系。

1 个答案:

答案 0 :(得分:2)

首先,必须将您的参数名称规范化为md-menu,否则angularjs将其规范化为mdmenu,这将永远与伪指令定义中的mdMenu不匹配。

第二,确保在您的范围内定义了$mdMenu;因为自从进行mdMenu: '='这样的绑定以来,angularjs会在范围内寻找变量。

下面有一个简单的代码片段,其中带有带有参数的指令,供您用作示例。

angular.module('app', [])
  .directive('myDirective', function () {
    return {
      scope: {
        'myParam': '='
      },
      link(scope, elem, attrs){
        console.log(scope.myParam)
      }
    }
  })
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.0/angular.js"></script>
<div ng-app="app" ng-init="test = 'foo'">
  <div my-directive my-param="test"></div>
</div>