如何在自定义指令内单击按钮时调用该指令

use*_*920 12 angularjs angularjs-directive

嗨,我正在研究angularjs的自定义指令.我只是想知道如何在单击按钮时调用该指令.请建议我如何实现这一目标.

谢谢

sam*_*ues 14

<div ng-controller="ctrl">
    <mydirc></mydirc>
    <button ng-click="clickMe()">call clickMe()</button>
</div>

app.directive('mydirc', function() {
    return {
        restrict: 'E',
        replace: true,
        template: '<div></div>',
        link: function($scope, element, attrs) {
            $scope.clickMe= function() {
                alert('inside click');
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这让我了解了很多角度范围内的美元! (3认同)
  • 有趣.即使按钮在`<mydirc>`之外,这仍然有效吗? (2认同)

Vid*_*ddy 10

以下示例显示了可以处理单击事件的示例自定义指令; 这是一个与范围无关的指令.并且必须先定义appRoot模块.

<div ng-controller="MyController">
    <button custom-click="">Click Me</button>
</div>

appRoot.directive('customClick', function() {
    return {
        link: function(scope, element, attrs) {
          element.click(function(){
           //Do something useful
          }); 
        }
    }
});
Run Code Online (Sandbox Code Playgroud)


ljr*_*jrh 5

通过"调用"指令,我将假设您指的是从指令处理onclick事件.

您可以利用指令的'link'属性来附加范围初始化和函数,如下所示:

http://jsbin.com/moruyoso/2

HTML

<!DOCTYPE html>
<html ng-app='app'>
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <div clicker></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

JS

var app = angular.module('app', []);

app.directive('clicker', function(){

  var link = function(scope){
      scope.showMessage = function(){
        alert('you clicked the directive!');
      };
  };

  return{
    link: link,
    template: "<button ng-click='showMessage()'>Click me!</button>"
  };

});
Run Code Online (Sandbox Code Playgroud)