返回承诺时,它会给我一个未知的提供程序错误

时间:2015-10-28 07:30:02

标签: angularjs

这是工厂。

[root@test /tmp]$ more a
\u8BF7\u5C06\u60A8\u8981\u8F6C\u6362\u7684\u6C49\u6587\u8981\u8F6C\u5185\u5BB9\u
7C98\u8D34\u5728\u8FD9\u91CC\u3002

[root@test /tmp]$ awk -F '.u8981..8F6C' '{print $1}' a
\u8BF7\u5C06\u60A8

[root@test /tmp]$ awk -F '.u8981..8F6C' '{print $2}' a
\u6362\u7684\u6C49\u6587

[root@test /tmp]$ awk -F '.u8981..8F6C' '{print $3}' a
\u5185\u5BB9\u7C98\u8D34\u5728\u8FD9\u91CC\u3002

这是控制器

latModule.factory('latSvc',
[
    "$http", "$scope", "$q",
    function($http, $scope, $q) {
        console.log("Enter latUserReportDateSvc");

        return {
            getPromiseForUserReportDate: function () {
                $scope.userId = "bpx3364";
                var deferred = $q.defer();
                $http.get('/api/UserReportStatusApi', { 'userId': $scope.userId }).then(function(reponse) {
                        deferred.resolve(reponse);
                    },
                    function(error) {
                        deferred.reject(error);
                    });
                return deferred.promise;
            },
            getPromiseForLocation: function () {
                $scope.userId = "bpx3364";
                var deferred = $q.defer();
                $http.get('api/UserAccountApi/', { 'userId': $scope.userId }).then(function (reponse) {
                    deferred.resolve(reponse);
                },
                    function (error) {
                        deferred.reject(error);
                    });
                return deferred.promise;
            },
            getPromiseForErrorSummary: function (userInfoVm) {
                console.log("latErrorSummarySvc getErrorCounts, userInfo: ", userInfoVm);
                $scope.userId = "bpx3364";
                $scope.serviceTypeCode = 4;
                var deferred = $q.defer();
                $http.get('/api/UserReportStatusApi', { 'userId': $scope.userId, 'serviceTypeCode': $scope.serviceTypeCode }).then(function (reponse) {
                    deferred.resolve(reponse);
                },
                    function (error) {
                        deferred.reject(error);
                    });
                return deferred.promise;
            }

        };


    }
]);

运行此代码后,我在尝试实现此承诺概念时收到未知的提供程序错误。因为我在通过服务调用而没有使用解析承诺而没有使用时,url被多次命中。

1 个答案:

答案 0 :(得分:0)

您不能将/ scope $ scope用于服务。 但据我了解您的代码,您可以使用局部变量来处理您的http请求查询参数。

Vineet是对的 - 你应该直接返回$ http.get()(它已经是一个承诺)。