点击两次Angular指令中的事件处理程序

Click event handler in Angular directive called twice

本文关键字:指令 事件处理 程序 Angular 两次      更新时间:2023-09-26

为click创建了click事件指令,但是click被调用了两次。

stopPropagation不能帮助我

angular.module('dod').directive('checkbox', [function () {
    var checkbox = {
        restrict: 'A',
        replace: false,
        transclude: false,
        link: function (scope, elem, attrs) {
            elem.on('click', function (e) {
                elem.toggleClass('checked');
            });
        }
    };
    return checkbox;
}]);

您所展示的使用DOM进行操作的方式不是一个好主意。这是"非角方式"。既然你想切换你正在点击的元素,看起来你可以从angularjs文档中尝试这种方法:

<script>
  angular.module('checkboxExample', [])
    .controller('ExampleController', ['$scope', function($scope) {
      $scope.checkboxModel = {
       value1 : true,
       value2 : 'YES'
     };
    }]);
</script>
<form name="myForm" ng-controller="ExampleController">
  <label>Value1:
    <input type="checkbox" ng-model="checkboxModel.value1">
  </label><br/>
  <label>Value2:
    <input type="checkbox" ng-model="checkboxModel.value2"
           ng-true-value="'YES'" ng-false-value="'NO'">
   </label><br/>
  <tt>value1 = {{checkboxModel.value1}}</tt><br/>
  <tt>value2 = {{checkboxModel.value2}}</tt><br/>
 </form>
https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D