Saya ingin mengirim aktivitas pengguna ke server, terutama tombol yang diklik pengguna.

Aku tahu aku bisa melakukan ini seperti ini.

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>

J:

$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);
}

Tapi cara ini mengharuskan saya untuk memasukkan sendServer ke semua acara ng-click. Ini mengganggu. Bisakah saya melakukan ini dengan cara yang lebih efisien?

0
N.F. 19 Agustus 2017, 07:40

2 jawaban

Jawaban Terbaik

Jika Anda ingin menjalankan sesuatu untuk setiap ng-click yang Anda tetapkan, Anda dapat menentukan direktif ngClick khusus untuk melakukan pekerjaan tersebut.

.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
      });
    }
  }
});

Namun, ini tidak akan mencakup setiap tindakan (aHref, ngSubmit...).

0
Ludovic Guillaume 19 Agustus 2017, 22:54

Mengapa tidak memiliki fungsi sendServer() dalam cakupan dan meneruskan argumen dengan direktif ng-click?

Contoh:

$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>
0
Baruch 19 Agustus 2017, 14:58