Как запустить метод для всех событий ng-click AngularJS

0

Я создал веб-приложение в Node.js, которое позволяет пользователям управлять своей базой данных mongoDB. У меня есть несколько событий click, которые выполняют CRUD-действия, которые изменяют статус базы данных. На каждом ng-click я вызываю соответствующую функцию для выполнения CRUD-действия. Проблема в том, что в каждой из этих функций я вызываю метод с именем refresh, который обновляет страницу, чтобы она соответствовала текущей информации о базе данных. Есть ли способ, я могу просто подключить функцию обновления, которая будет вызываться всякий раз, когда событие ng-click закончилось?

Примеры

$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");
    }
};
  • 0
    Под ng-click вы имеете в виду, когда $http.post ?

1 ответ

0

Создайте фабрику обертки для вашего 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
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню