在控制器angularjs中调用自定义指令函数

时间:2014-07-04 04:20:53

标签: javascript html angularjs

所以我有一个示例自定义指令代码

angular.module('myApp.directives', []).
            directive('exampleDirective', ['version', function(version) {
             return {
                      link:function(scope,elm,attr) {
                         elm.on('click',function() {
                              alert("clicked element")
                         });
                      }
                    }
            }]);

这是我制作的标记html

   <example-directive></example-directive>
   <button ng-click="click()">click me</button>

正如您所看到的那样,按钮位于example-directive环境之外,您可以看到定义了ng-click并将click()函数抛出到控制器中。

我的问题是,当我点击angularjs中的ng-click按钮时,如何从自定义指令获取alret(&#34;点击元素&#34;)?

1 个答案:

答案 0 :(得分:3)

试试这样:

plunker

app.directive('exampleDirective', function() {
  return {
    restrict: 'E',
    link:function(scope,elm,attr) {
       scope.clicky = function(){console.log('clicked')};
    }
  }
});

由于我们没有使用该指令创建新的作用域,因此指令的链接函数中引用的作用域和ng-click推断的作用域(这是另一个带有角度的指令)将是相同的范围,在这种情况下是$rootScope

请注意,您需要为指令添加restrict: 'E'以处理您编写的内容。它的默认值是by属性(E代表元素名称)所以如果你有<div example-directive />

它没有它就可以工作