无法在Angular 1.2中调用Directive中的函数

时间:2014-11-12 20:57:34

标签: angularjs angularjs-directive

我有一个孤立的范围指令,当我点击一个按钮时调用该指令,该指令将所有范围的attrs传递给一个element.bind('点击'打开一个fancybox(显示一个模态)我遇到的问题是当fancybox打开并点击一个链接时,如果我在该锚点上放置一个onclick事件,它就永远不会触发,它表示该函数未定义,即使它在指令定义中也是正确的。我不会'得到它,有什么不对?

以下是一个例子:

search.directive('popup', [ function () {
 return {
  scope: {
   content: '@',
   expiration: '@',
   instructions: '@'
  },
 restrict: 'A',
 controller: function($scope, $element) {

 function hello() {
    alert('hello richie');
  }

var attr = '<a onclick="hello();" href="google.com">' + $scope.content + '</a>';


  $element.bind('click', function() {
    $.fancybox.open({
      modal     : false,
      maxWidth  : 800,
      maxHeight : 600,
      fitToView : false,
      autoSize  : true,
      content: attr,
      closeClick  : false,
      openEffect  : 'none',
      closeEffect : 'none',
      helpers: {
        overlay: {
          locked: false
        }
      },
      tpl : {
       closeBtn : '<button type="button" class="fancybox-item fancybox-close close my-own-close">×</button>'
      }   
    });
  });

1 个答案:

答案 0 :(得分:0)

我不熟悉您正在使用的fancybox课程,但我猜测您需要在html上调用$compile才能将其设置为内容,否则它只是原始HTML,它将没有角度上下文。因此,它将寻找一个名为hello()的全局函数,它不存在。