angularjs - 在 Angular 中使用工厂时如何处理 $http 错误

标签 angularjs angular-http

我有一个如下所示的 Controller 和工厂,可以轻松处理成功。但是我如何处理错误?

Controller

app.controller("draftsCtrl", ["$scope", "DashboardFactory", function ($scope, DashboardFactory) {
    DashboardFactory.drafts(function (successCallback) {
        $scope.rooms listings= successCallback;
    });
}]);

工厂

app.factory('DashboardFactory', function ($http) {
    var DashboardFactory = {};

    DashboardFactory.active_listings = function (successCallback) {
        $http.get('active.json').success(successCallback);
    }

    DashboardFactory.inactive_listings = function (successCallback) {
        $http.get('inactive.json').success(successCallback);
    }

    DashboardFactory.drafts = function (successCallback) {
        $http.get('drafts.json').success(successCallback);
    }
    return DashboardFactory;
});

最佳答案

与其传递回调,不如选择正确的 Promise 工作流程。为此,使您的服务方法返回 promise objects :

app.factory('DashboardFactory', function ($http) {
    var DashboardFactory = {};

    DashboardFactory.active_listings = function () {
        return $http.get('active.json');
    }

    DashboardFactory.inactive_listings = function () {
        return $http.get('inactive.json');
    }

    DashboardFactory.drafts = function () {
        return $http.get('drafts.json');
    }

    return DashboardFactory;
});

然后使用 Promise API 来处理成功(then 回调)和错误(catch):

app.controller("draftsCtrl", ["$scope", "DashboardFactory", function ($scope, DashboardFactory) {
    DashboardFactory.drafts().then(function (response) {
        $scope.rooms_listings = response.data;
    })
    .catch(function() {
      console.log('Error ocurred');
    });
}]);

关于angularjs - 在 Angular 中使用工厂时如何处理 $http 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669012/

相关文章:

javascript - Angular2 HTTP : Uncaught SyntaxError: Unexpected token < polyfills

angular - 我如何使用 Angular 2 请求数据

javascript - 类型 'includes' -angular2 中缺少属性 'Subscription'

angularjs - SVG 中的 Angular 变量

javascript - Angular - 如何从 DOM 中删除我使用过 $compile 的元素?

javascript - 如何仅在使用 angularJS 单击按钮时显示输入字段?

angularjs - Angular Js - 带面包屑的 ui 路由器

来自 $http 的 Angularjs 自动完成

angular - 如何在 XmlHttpRequest 中使用 Angular 拦截器

javascript - AngularJs - 如何在 chrome 应用程序中打印模态弹出 div 内容?