当前位置: 首页 > 面试题库 >

Angular-TypeError:XX不是函数

宗政坚白
2023-03-14
问题内容

也许我缺少某种属性,但是我正在跟踪该项目,并且在控制器中遇到此错误。

TypeError: loginService.signin is not a function

这是我的controller.js

angular.module('appcontrollers', []).controller('LoginController', ['$rootScope', '$scope', '$http', '$location', '$localStorage', 'loginService',  
        function ($rootScope, $scope, $http, loginService) {

        $scope.signin = function() {

            console.log("username: " + $scope.username);
            console.log("pass: " + $scope.password);

            var formData = {
                username: $scope.username,
                password: $scope.password
            };

            // ERROR IN THIS LINE
            loginService.signin(formData, function(res) {
                console.log("asdf");
                if (res.type == false) {
                    console.log(res.data);
                } else {
                    $localStorage.token = res.data.token;
                    console.log("Window location /");
                }
            }, function() {
                $rootScope.error = "Error en el logueo del usuario";
            });

            // Setting Token:
            $scope.token = $localStorage.token;
        }

    }])

这是我的service.js

'use strict';

angular.module('app-services', [])
.factory('loginService', ['$http', '$localStorage', function ($http, $localStorage) {
    console.log('services - loginService');

    var baseUrl = "http://angular-restful-auth.herokuapp.com";

    function changeUser(user) {
        console.log('1');
        angular.extend(currentUser, user);
    }

    function urlBase64Decode(str) {
        console.log('2');
        var output = str.replace('-', '+').replace('_', '/');
        switch (output.length % 4) {
            case 0:
                break;
            case 2:
                output += '==';
                break;
            case 3:
                output += '=';
                break;
            default:
                throw 'Illegal base64url string!';
        }
        return window.atob(output);
    }

    function getUserFromToken() {
        console.log('3');
        var token = $localStorage.token;
        var user = {};
        if (typeof token !== 'undefined') {
            var encoded = token.split('.')[1];
            user = JSON.parse(urlBase64Decode(encoded));
        }
        return user;
    }

    // Set user token.
    var currentUser = getUserFromToken();

    return {
        save: function(data, success, error) {
            $http.post(baseUrl + '/signin', data).success(success).error(error)
        },
        signin: function(data, success, error) {
            $http.post(baseUrl + '/authenticate', data).success(success).error(error)
        },
        me: function(success, error) {
            $http.get(baseUrl + '/me').success(success).error(error)
        },
        logout: function(success) {
            changeUser({});
            delete $localStorage.token;
            success();
        }
    };
}

]);

我的应用程序可以正常工作,直到用户按下signin()从表单中调用的提交按钮为止。然后我在控制台中用正确的数据得到这两行

>> username: somename
>> pass: somepassword

然后出现错误。谁能帮助我以通过此signin()功能?


问题答案:

您搞砸了依赖注入数组,当您在函数中使用它时,它应该遵循正确的依赖顺序。

angular.module('appcontrollers', []).controller('LoginController', ['$rootScope', '$scope', '$http', '$location', '$localStorage', 'loginService',  
        function ($rootScope, $scope, $http, $location, $localStorage, loginService) {


 类似资料:
  • 我尝试在两个日期之间获取值。在服务器端,它可以正常工作,但在前端,它会将错误显示为生日。地图不是一个函数 生日服务ts 浏览器控制台错误 core.js:1350错误打字错误:birthdays.map不是一个函数在MapSubscriber.project(birthday.service.ts:28)在MapSubscriber.webpackJsonp.../.../.../.../rxjs

  • 问题内容: 我正在尝试在Angular中使用Cookie-这是我正在尝试的方法: 我在控制台中收到此错误: 有什么想法我要去哪里吗? 更新 检查所有版本使用的Angular版本-任何Angular人士都可以阅读,并在文档中将版本切换为鲜绿色且巨大!您根本不会注意到它。 问题答案: 在Angular 1.3.14中,您可以使用 请参阅以下文档:Angular Cookies

  • 我在角7应用程序中实施剑道下拉列表。我试图绑定对象FundClass到下拉列表。我将fundclass对象从父共生体传递给子组件,并将该数据绑定到子组件中的下拉列表。数据确实被绑定,可以在下拉控件中看到数据,但是当我选择一个下拉项时,我会得到下面的错误 我绑定的数据的json结构 父组件 这里的数据对象包含FundClass对象。 父组件html。通过对象ftr。基金类 子组件

  • 问题内容: 尝试轮询AngularJS资源上的自定义方法时,我在处收到以下错误:(该方法工作正常。) Angular.js 10016-10035: 简化的资源: 我收到错误的简化指令: 一旦运行该方法,执行该行就会引发上面的错误。 在Chrome检查器中,我看到对API的调用实际上已完成。但是兑现诺言似乎会引发一些错误… 我该如何解决这个错误? 编辑: Angular Resource正在尝试用

  • 我正在使用一个服务从url中检索数据,我正在另一个组件中使用该服务在前端中显示数据。。。 我的服务: 使用该服务的我的组件: 但我在控制台中得到以下错误: core.js:1633错误类型Error: req.url.toLowerCase不是HttpXsrfInterceptor.push中的函数../node _ modules/@ angular/common/Fe sm5/http . j

  • 问题内容: 我正在建立一个指令,该指令应该将html文件放入dom并使用angular的compile进行编译 我收到一个错误: $ templateRequest不是函数 显然我做错了,不知道是什么, 这是我的指令: 问题答案: -function 的第二个参数是element。如果您要注入,则需要在构造函数中进行注入: 我建议在处理诸如指令功能之类的工厂功能时使用功能。下面这个结构: