AngularJS восстанавливает форму после обратного вызова API

0

в моем коде у меня есть Factory с ng.resource:

.factory('company', function($resource){
return $resource(appHelper.apiPath('auth/company/info'), {}, {
    update: {
        method: "PUT"
    }
});
});

Если я отправлю форму в своем контроллере, все будет хорошо работать, если api даст положительный ответ. В случае ошибки api возвращает объект json с http 200. В моей функции обратного вызова я проверяю ответ:

$scope.saveCompanyForm = function (company) {
        company.$update(
            function(data) {
                    if(data.status == 'ERROR') {
                        alert("error from api")


                    } else {
                        alert("no error")
                    }
            }, function(error) {
                    alert("error")
    }

Проблема в том, что api возвращает ошибку, очищенную форму. Если ответ API с http 500 или http 404 форма не очищается. Есть ли возможность предотвратить угловое изменение формы? Спасибо, лучший

  • 0
    Вы сбрасываете исходную модель данных в модель объема
  • 0
    @ShintuJoseph Нет, нет, в своей функции контроллера я заполняю $ scope.company_data: $scope.company_data = goliathCompanyService.get(); И в моей форме: ng-submit="companyEditForm.$valid && saveCompanyForm(company_data)"
Теги:
rest
angularjs-ng-resource

1 ответ

1
Лучший ответ

Вы всегда можете сохранить его раньше и применить после обратного вызова.

$scope.saveCompanyForm = function (company) {

    var saved_company = company;

    company.$update(
        function(data) {
                if(data.status == 'ERROR') {
                    alert("error from api")
                    company = saved_company;

                } else {
                    alert("no error")
                    company = saved_company;
                }
        }, function(error) {
                alert("error")
                company = saved_company;
}
  • 0
    Я уже пробовал это, но если я сделаю console.log: $scope.saveCompanyForm = function (company) { var saved_company = company; console.log(saved_company); company.$update( function(data) { if(data.status == 'ERROR') { alert("error from api") company = saved_company; console.log(company); ... В обоих случаях я получаю ответ от API: m {status: "ERROR", status_code: 400, $promise: d, $resolved: true} не имею, почему
  • 0
    Это потому, что вы делаете это, $ scope.company_data = goliathCompanyService.get (); get возвращает обещание, внутри этого обещания находится ваш фактический объект ... Вы должны получить объект внутри обещания и применить его к компании следующим образом: $ scope.company_data = goliathCompanyService.get (); $ scope.company = $ scope.company_data.data; (или как объект называется)

Ещё вопросы

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