Angularjs指令创建click事件

时间:2016-03-23 22:52:57

标签: javascript angularjs angularjs-directive

我有简单的指令,如下:

    angular.module('docsTemplateUrlDirective', [])
    .controller('Controller', ['$scope', function($scope) {
      $scope.customer = {
        name: 'Naomi',
        address: '1600 Amphitheatre'
      };

$scope.clicke = function(){
alert('test');
};

    }])
    .directive('myCustomer', function() {
      return {
        templateUrl: 'my-customer.html'
      };
    });

的index.html

<div ng-controller="Controller">
  <div my-customer click-event='clicke()'></div>
</div>

MY-customer.html

Name: {{customer.name}} Address: {{customer.address}}
<button>click</button>

我想为点击按钮创建事件,然后在我的控制器中创建事件 使用此活动。 但我不知道该怎么做。 帮帮我吧非常感谢。

3 个答案:

答案 0 :(得分:1)

我建议使用Angular已经给你的东西:ng-click

以下是我为您做的JSBin示例:

<div ng-controller="Controller">
  <div my-customer ng-click='clicke()'></div>
</div>

如果单击该指令,它应如下所示:

enter image description here

答案 1 :(得分:1)

您可以使用ng-repeat迭代一组客户,然后让您的ng-click函数获取与哪个客户(数组中的索引)相关联的参数...

<div ng-repeat="customer customers track by $index" ng-click="myClickHandler(index)">
  {{customer}}
</div>

答案 2 :(得分:1)

我建议遵循解决方案。一个工作的例子可以在 - @sumit Plunker
这是代码示例:

angular.module('docsTemplateUrlDirective', [])
  .controller('Controller', ['$scope', function($scope) {
    $scope.customer = {
      name: 'Naomi',
      address: '1600 Amphitheatre'
    };

    $scope.clicke = function(evt) {
      alert('test');
    };

  }])
  .directive('myCustomer', function($parse) {
    return {
      restrict: 'A',
      scope: true,
      templateUrl: 'my-customer.html'
    }
  })
  .directive('clickEvent', function($parse) {
    return {
      restrict: 'A',
      scope: true,
      link: function(scope, el, attrs) {
        var expressionHandler = $parse(attrs.clickEvent)
        el.find('#btnSubmit').on('click', function(e) {
          expressionHandler(scope);
        })
      }
    }
  });