【问题标题】:View is reloaded after a http request in AngularJS在AngularJS中的http请求后重新加载视图
【发布时间】:2017-06-03 05:27:10
【问题描述】:

我想在不重新加载视图的情况下使用 POST 方法向 API 提交数据。无论成功还是错误,我的视图都会在运行后重新加载。

我正在使用此函数向 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>

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

如何避免重新加载视图?


更新

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

【问题讨论】:

  • 请提供表单的 HTML。
  • 更新了表单的 HTML,尽管即使从其他元素调用该函数,我仍然会重新加载我的表单。
  • 您是否尝试过在按钮上使用 ng-click 而不是使用 ng-submit ?抱歉,不确定这是否是您从其他元素调用该函数的意思。 EDIT 如果表单在 200 时没有重新加载,可能与未捕获的错误有关?尝试添加.catch

标签: javascript angularjs


【解决方案1】:

所以,问题来自另一个地方:

如果响应是错误的,则有一个拦截器正在重新加载视图。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-05
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2014-01-24
    相关资源
    最近更新 更多