要检测AngularJS中的点击次数,我是使用指令还是控制器?

时间:2015-10-18 20:39:11

标签: angularjs angularjs-directive angular-controller

我想跟踪abuttoninput[type="submit"]

的所有点击次数

使用连接到body标签的控制器对我来说很有意义。我需要跟踪每个点击和日期和时间戳。我准备好了API,但我无法弄清楚如何听取点击次数。

我认为控制器是一种很好的方法,但我读过的一些东西就是使用指令。基本上将body标签转换为指令。

这对我来说没有意义,但我是新手。

而且,在任何一种情况下,我如何检测点击?我正在尝试使用下面的指令,但它没有触发。说找不到domElement

这是我的指示。如果我这样做,我不需要控制器将点击写入我的API吗?

'use strict';

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

loggerDirectives.directive('loggerdirective', function () {

  return {
    link: function (scope, element, attrs) {

      // Get a reference to the button DOM element
      var clickedDOMElement = document.querySelector(['a, button, input[type="submit"']);

      // Wrap it as a jqLite element
      var clickedItem = angular.element(domElement);

      var onItemClick = function () {
        // Do something
        conlsole.log('Clicked');
      };

      clickedItem.on('click', onItemClick);

      scope.$on('$destroy', function () {
        clickedItem.off('click', onItemClick);
      });
    }
  };
});

1 个答案:

答案 0 :(得分:2)

添加' listen'指向你想听的所有元素。

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

loggerDirectives

.directive('listen', ['listenService', function (listenService) {

  return {
    restrict : 'A',
    link: function (scope, element) {

      element.on('click', function(){
         //Do you stuff here
         listenService.yourFunction();
      });
    }
  };
}]) //You can use your API in a service, here called listenService. It is used in the directive

.service('listenService', function(){
    this.yourFunction = function(){
      //execute your API here
    };
});