javascript - Angularjs 服务 promise 错误

标签 javascript angularjs

我正在尝试在 angularjs 中构建简单的服务。服务的响应在 Controller 中未定义。下面是我的代码:

服务:

yourMarketApp.factory('User',function($http){

    return {
        getUserCount: function(){
            var count;
            $http.get('/Ecomm-Java-Backend/test').success(function(result) {
                console.log("Count is "+result);
                console.log(result);
                count =result;
                return count;
            })


        }
    }

});

Controller :

yourMarketApp.controller('homeCtrl',function($scope,User){

    $scope.count =0;
    var temp =User.getUserCount();
     User.getUserCount().then(function(data){
         $scope.count=data;
         console.log("Count is From ctrl "+$scope.count);
    });

});

这里console.log服务给出了期望的结果。但是,在 Controller 中,错误显示为:“TypeError:无法读取未定义的属性‘then’”。一项观察结果是代码在 var temp 行没有中断,因此服务注入(inject)得很好。

最佳答案

您需要从 getUserCount 中的 $http.get 返回 promise :

return {
    getUserCount: function(){
        var count;
        return $http.get('/Ecomm-Java-Backend/test').success(function(result) {
            console.log("Count is "+result);
            console.log(result);
            count =result;
            return count;
        });
    }
}

关于javascript - Angularjs 服务 promise 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28402329/

相关文章:

Javascript-通过函数和函数参数设置 DIV 的背景图像

javascript - 像素网格上的递归填充函数?

javascript - ng-model 在输入文本输入后不再更新

angularjs - Angular $localStorage 不适用于 WP8

javascript - 使用 ui-router 从 View 内部显示 View

javascript - 删除响应页面的大小属性的替代方法

javascript - 如何在 ASP.Net Core MVC 中创建级联 SelectList

javascript - Material Design LinearProgress 组件的工作示例

javascript - 使用 AngularJS 禁用表单

node.js - 无法从 Angular 调用 Express Rest api