2016-05-17 8 views
0

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

Примеры

$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

К 'нг-click' вы имеете в виду, когда' $ http.post' выполняется? –

ответ

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