当前位置:  开发笔记 > 编程语言 > 正文

Angular服务返回undefined

如何解决《Angular服务返回undefined》经验,为你挑选了1个好方法。

我的角度服务有问题.

我的服务有下一个代码:

app.service("Utilidades", ['$http', '$window', function ($http, $window) {
return {
    Get: function (urlAbsoluta, parametros, callback) {
        var Utilidades = this;

        $http
            .get(app.UrlBase + urlAbsoluta, parametros)
            .then(function (data) {
                var Datos = angular.fromJson(data);

                Utilidades.GuardarToken(Datos.Token);

                callback(Datos);
            });
    },


    ObtenerMenu: function () {
        var Utilidades = this;

        Utilidades.Get("Administracion/Api/Usuarios/Menu", {}, function (Datos) {
            Datos = angular.fromJson(Datos.data);

            if (Datos.Error == "") {
                return Datos.Resultado;
            } else {
                return "";
            }
        });
    }
}
}]);

然后,在我的控制器中,我有下一个代码:

app.controller('LoginCtrl', ['$scope', '$http', '$location', 'Utilidades',
function Iniciador($scope, $http, $location, Utilidades) {
        var Li = this;

        Li.Usuario = "";
        Li.Contrasena = "";
        Li.Error = "";
        Li.MenuItems = [];

        Li.Menu = function () {
            Li. MenuItems = Utilidades.ObtenerMenu();
        }
    }]
);

当我运行它时,Li.MenuItems有未定义的值,我不知道为什么.



1> JLRishe..:

你的return语句是一个函数里面ObtenerMenu方法,所以ObtenerMenu方法实际上并不返回任何东西.您需要提供一种访问结果值的方法:

服务

app.service("Utilidades", ['$http', '$window', function ($http, $window) {
    return {
        Get: function (urlAbsoluta, parametros) {
            var Utilidades = this;

            // v------------  return statement here
            return $http
                .get(app.UrlBase + urlAbsoluta, parametros)
                .then(function (data) {
                    var Datos = angular.fromJson(data);

                    Utilidades.GuardarToken(Datos.Token);

                    // v------------  return statement here
                    return Datos;
                });
        },


        ObtenerMenu: function () {
            var Utilidades = this;

            // v------------  return statement here
            return Utilidades.Get("Administracion/Api/Usuarios/Menu", {})
                .then(function (Datos) {
                    if (Datos.Error == "") {
                        return Datos.Resultado;
                    } else {
                        return "";
                    }
                });
        }
    };
}]);

在控制器中

Li.Menu = function () {
    Utilidades.ObtenerMenu()
        .then(function (resultado) {
             Li. MenuItems = resultado;
        });
}

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有