1

aのすべてのクリックを追跡buttonしたいinput[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);
      });
    }
  };
});
4

1 に答える 1

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
    };
});
于 2015-10-18T20:48:22.353 に答える