如何将回调函数传递给Angular JS dirctive

时间:2016-12-21 00:59:23

标签: angularjs

我正在尝试创建一个可以传递按钮对象数组的页脚指令。

这是我的阵列......

    $scope.buttons = [
    {
      btnLabel: "Close",
      btnClass: "btn-p2 pull-left",
      show: true,
      disabled: false,
      callback: function(){console.log('close...');},
      role: ''
    },
    {
      btnLabel: "Save",
      btnClass: "btn-p1 pull-right",
      show: true,
      disabled: true,
      callback: saveTest,
      role: ''
    }
  ];

我的大部分工作方式都是我想要的,但是在传递回调函数方面存在问题。我正在看按钮但是当我点击回调函数时没有被调用。有关如何传递回调函数的任何想法?

谢谢和问候, DJ

1 个答案:

答案 0 :(得分:0)

由于scope中未定义$scope.saveTest = function () { } ,因此指令无法访问它。所以要么你必须在范围上定义它们并在那里使用它们,要么你可以在它们自己的范围内将它们作为指令属性传递:

第一种方式

app.directive('someDirective', function() {
  return {
    restrict: 'E'
    templateUrl: "..."
  }
})

然后您可以在指令中使用父作用域:

app.directive('someDirective', function() {
  return {
    restrict: 'EA',
    scope: {
      saveTest: '&',
      close: '&'
    },
    templateUrl: "..."
  }
})

如果没有在指令中定义范围,那么你就是说我想在这里使用父范围。

第二种方式

<div some-directive save-test="saveTest" close="close"></div>

现在我们已经在指令中定义了它们,我们必须从html传递它们:

{{1}}