javascript - 使元素可点击的 Angular Directive(指令)?

标签 javascript angularjs angularjs-directive

我正在尝试创建一个可重用指令,从给定对象生成 PDF 报告。

Javascript:

angular.module('myApp', [])

.controller('DemoCtrl', [function($scope) {
  $scope.data = { test: 'testing!' }
}])

.directive('pdfMake', [function() {
  return {
    restrict: 'AE',
    scope: {
      data: '='
    },
    template: '<a ng-click="generatePdf(data)">generate PDF</a>',
    link: function($scope) {

      $scope.generatePdf = function(data) {
        alert(data)
      }
    }
  }
}])

模板:

<button pdf-make data="data">Export Source</button>

或者更好...

<button pdf-make="data">Export Source</button>

唯一的问题是我需要在不同的元素上重用该指令,例如 <button> , <span> ,或下拉菜单<li>的。

我知道我的做法是错误的,因为当我不想替换按钮文本时指定了一个模板。我只需要它来处理点击时给定的数据。我找不到任何与我想做的事情类似的例子。这可以通过隔离范围实现吗?谢谢。

更新: 根据 @chandings 的回答,我更新了我的 plunk plunk 并使用 element.bind('click')有魅力吗: http://plnkr.co/edit/CkgCL1IM095PDSdd3zTS?p=preview

最佳答案

你只需要嵌入。您定义 Controller 的方式也存在问题。

应该是

angular.module('myApp', [])

.controller('DemoCtrl', ["$scope", function($scope) {
  $scope.data = { test: 'testing!' }
}])

angular.module('myApp', [])

.controller('DemoCtrl', function($scope) {
  $scope.data = { test: 'testing!' }
})

这是您的 plunker 链接的一个分支,其中包含我的编辑以使其正常工作。

希望这是你想要的。 http://plnkr.co/edit/JmXEMFsZezha2N0rScko?p=preview

关于javascript - 使元素可点击的 Angular Directive(指令)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28291708/

相关文章:

javascript - 如何在不使用任何其他鼠标事件的情况下检测长按鼠标事件

javascript - 替换数组中的对象

angularjs - "Cross-origin-request blocked"。如何克服呢?

javascript - Android_Studio 错误

javascript - 如何在 jQuery 中推送、弹出和包装值?

javascript - 从 Sails 中的模型内部获取当前用户

javascript - 服务和指令之间的通信 : dependency or or events

javascript - Angularjs 网站没有在谷歌上建立索引

html - 无法设置默认文本框值

javascript - 使用包含隐藏内部元素的父范围的指令范围