AngularJS:将用户活动发送到服务器

时间:2017-08-19 04:40:10

标签: javascript angularjs

我想将用户活动发送到服务器,尤其是用户点击的按钮。

我知道我可以这样做。

HTML:

<button type="button" class="btn btn-primary" ng-click="pressA()">A</button>
<button type="button" class="btn btn-primary" ng-click="pressB()">B</button>

JS:

$scope.pressA = function() {
  sendServer("A");
  // Do other things for button A
}

$scope.pressB = function() {
  sendServer("B");
  // Do other things for button B
}

function sendServer(msg) {
  var req = new XMLHttpRequest();
  var params = "msg=" + encodeURIComponent(msg);
  req.open("POST", "/scripts/log");
  req.send(params);
}

但是这种方式要求我向所有ng-click事件插入sendServer。这很麻烦。我能以更有效的方式做到这一点吗?

2 个答案:

答案 0 :(得分:0)

为什么不在范围内使用sendServer()函数并使用ng-click指令传递参数?

示例:

$scope.sendServer = function(message) {
  // do things
}

HTML

<button type="button" class="btn btn-primary" ng-click="pressA('A')">A</button>
<button type="button" class="btn btn-primary" ng-click="pressB('B')">B</button>

答案 1 :(得分:0)

如果要为您定义的每个ng-click执行某些操作,可以定义自定义ngClick指令来完成工作。

.directive('ngClick', function() {
  return {
    restrict: 'A',
    priority: 1, // built-in ngClick has priority 0
    link: function(scope, element, attr) {
      element.on('click', function() {
        // do something
      });
    }
  }
});

但是,这不会涵盖所有操作(aHref,ngSubmit ......)。