在AngularJS中的http请求后重新加载视图

问题描述:

我想使用POST方法将数据提交给API,而无需重新加载视图。无论成功还是错误,我的视图在运行后都会重新加载。在AngularJS中的http请求后重新加载视图

我使用这个功能,将数据提交到API:

$scope.addObject = function (data) { 
    Object.add(data).then(function (response) { 
     $scope.isSubmitting = false; 
     if (response !== null) 
      toaster.pop(response.status, response.status, response.message); 
     return false; 
    }); 
}; 

它使用以下服务:

.factory('Object', function ($http, $rootScope) { 
    var object = {}, 
     url = $rootScope.apiUrl; 

    object.add = function (data) { 
     return $http({ 
      url: url + '/object/add', 
      method: 'POST', 
      params: data 
     }) 
     .then(function(response) { 
      return response.data; 
     }); 
    }; 

    return object; 
}); 

这里的HTML表单。

<form class="object-form" ng-submit="addObject(objectData)"> 
    <select name="type" ng-model="objectData.type"> 
     […] 
    </select> 
    <button type="submit">OK</button> 
</form> 

表单运行得很好,它不提交页面。只是视图重新加载。

如何避免重新加载视图?


UPDATE

如果请求成功(状态= 200),它不重新加载图。

+1

请提供表单的HTML。 – Baruch

+0

用HTML更新了表单,虽然从其他元素调用函数仍然让我的表单重新加载。 – fksr86

+0

您是否尝试过在按钮上使用ng-click而不是使用ng-submit?对不起,不知道这是否是你通过从其他元素调用函数的意思。 **编辑**如果窗体不重新加载200,也许它必须处理未被捕获的错误?尝试添加一个'.catch'。 – Baruch

那么,问题是从其他地方来:

有这是重装认为如果响应是一个错误的拦截器。

我把它作为一个答案,因为这是第二次拦截器导致我的问题,所以,如果有人来到这里,要知道你应该检查拦截器。