вы заменили кастыль на jquery гуано на angular.js.
Никогда в контроллере не работайте с jquery или dom. Для этого существуют директивы.
Никогда в контроллере не работайте с $http, выносите все это в сервисы.
Конструкция, которую вы приводите, реализуется приблизительно так:
angular.module('app')
.factory('myApiClient', function ($http, $q) {
return {
save: function (data) {
return $http({
method: 'POST',
url: 'some_url',
data: data
}).then(function (response) {
if (!response.data || response.data.error) {
return $q.reject();
}
return response.data; // я не уверен надо ли вам это... сами решите
}, function () {
return $q.reject();
});
}
}
})
.controller('MyCtrl', function ($scope, myApiClient) {
$scope.save = function () {
myApiClient.save(...).then(function (data) {
$scope.showResponse = true;
}, function () {
$scope.showResponse = false;
})
}
});
А в представлении уже используете директивы, которые завязаны на scope (ngHide/ngShow). Идею вы должны уловить. Суть в максимальном уменьшении связанности. Иначе смысла использовать angular я не вижу. И у меня есть подозрение что для вашей задачи не нужен angular.