如何在所有ng点击事件AngularJS上启动一个方法

How to launch a method on all ng-click events AngularJS

本文关键字:启动 方法 一个 AngularJS 事件 ng      更新时间:2023-09-26

我在Node.js中制作了一个web应用程序,让用户管理他们的mongoDB数据库。我有几个点击事件,它们执行CRUD操作来更改数据库的状态。每次点击ng时,我都会调用相应的函数来执行CRUD操作。问题是,在这些函数中,我调用了一个名为refresh的方法,该方法会更新页面,使其与当前数据库信息匹配。有没有办法,只要一个ng点击事件结束,我就可以挂起要调用的刷新函数?

示例

$scope.dropDB = function (DB) {
    $http.post('/dropDB', JSON.stringify({ 'DB': DB })).success(function (response) {
        refresh();
    });
};
$scope.addDB = function (DB) {
    try{
        var objson = JSON.stringify({ 'DB': DB }) ; 
        $http.post('/addDB', objson).success(function (response) {
            console.log("DB Added: ");
            refresh();
         });
    }catch(ex){
        alert("Not a valid input type");
    }
};

为您的http调用创建包装工厂

['$http', function($http) {
  return function(method, route, body) {
    var args = method === 'POST' ? [route, body] : [route];
    return new Promise(function(resolve, reject) {
      return $http[method].apply(this, args).then(function(res) {
        refresh();
        resolve(res)
      }).catch(function(err) {
        reject(err);
      })
    });
  }
}];

然后你可以在你的控制器中使用它

myFactory('POST', '/database', {foo: 'bar'}).then(function(res) {
  // at this point refresh() was already called
})