集中记录 ng-click

标签 logging click angularjs

在我的 angular-js 应用程序中,我想跟踪每个用户如何使用它。因此,最初我在客户端上构建一个日志机制,以跟踪用户单击的内容,然后将数据发送到我的服务器上。

这里的主要问题是我想记录我的应用程序中的所有 ng-click 事件。是否可以集中执行此操作,而不必转到每个功能并添加我的功能?

最终我想在日志消息中包含被单击的 div 的 id。

最佳答案

使用指令和服务,如下所示:

app.directive('logClickEvent', function(Logger) {
  return {
    restrict: 'A',
    link: function (scope, element, attrs) { 
      element.bind('click', function(event) {
        Logger.logEvent(event);
      });
    }
  }  
})

app.factory('Logger', function () {
  return { 
    logEvent: function(event) {
      // implement your logger logic here
    }
  };
});

然后将指令放置在您要记录的所有元素上:

<button id="button1" log-click-event>button1</button>

jsFiddle:http://jsfiddle.net/bmleite/7wBsv/

选项#2:“覆盖”ng-click:http://jsfiddle.net/bmleite/7wBsv/2/

关于集中记录 ng-click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14395128/

相关文章:

database - 使用过时的统计数据而不是当前的统计数据

java - 如何分离Log4j配置?

java - 为库的每个实例单独记录器

c++ - QTableView : How can i use clicked() signal correctly to get index of selected item?

angularjs - React 等价于 ng-repeat

javascript - 当 gn-model 为 true 时如何将焦点转移到输入上?

javascript - AngularJS 使用 ng-repeat 重绘 div 列表

java - BufferedWriter、FileWriter、Output Stream……做这些事情最现代的方法是什么?

jquery - 重写 JQuery .click() 函数

android - 模拟用户输入