这是工厂。
[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被多次命中。
答案 0 :(得分:0)
您不能将/ scope $ scope用于服务。 但据我了解您的代码,您可以使用局部变量来处理您的http请求查询参数。
Vineet是对的 - 你应该直接返回$ http.get()(它已经是一个承诺)。