【问题标题】:Argument 'myController' is not a function, got undefined参数“myController”不是函数,未定义
【发布时间】:2016-10-28 12:01:01
【问题描述】:

我正在尝试在我的 Angular 应用程序中设置一些控制器,但我不确定为什么我不能让它们工作,因为我认为我使用的方法与以前类似。

我声明了 app.js 文件:

'use strict';

var modules = [
    'app.controllers',
    'ngCookies',
    'ngResource',
    'ngSanitize',
    'ngRoute',
    'ui.router',
    'LocalStorageModule',
    'angular-loading-bar'
];

var app = angular.module('app', modules);

app.config(function($httpProvider) {
    $httpProvider.interceptors.push('authInterceptorService');
})

app.factory('forgotPasswordService', ['$http', function ($http) {

    var fac = {};

    fac.forgotPassword = function (forgotPasswordData) {
        return $http.post('/api/Account/ForgotPassword', forgotPasswordData)
    };

    return fac;

}])

app.factory('signUpService', ['$http', function ($http) {

    var signUpServiceFactory = {};

    signUpServiceFactory.saveRegistration = function (registration) {
        return $http.post('/api/account/register', registration);
    };

    return signUpServiceFactory;
}]);

然后是带有这个内容的controllers.js文件:

angular.module('app.controllers', [])
    .controller('signupController', [
        '$scope', '$window', 'signUpService',
        function($scope, $window, signUpService) {
            $scope.init = function() {
                $scope.isProcessing = false;
                $scope.RegisterBtnText = "Register";
            };

            $scope.init();
            $scope.IsLimitedCompany = null;
            $scope.registration = {
                Email: "",
                Password: "",
                ConfirmPassword: ""
            };

            $scope.signUp = function() {
                $scope.isProcessing = true;
                $scope.RegisterBtnText = "Please wait...";
                signUpService.saveRegistration($scope.registration).then(function(response) {
                    alert("Registration Successfully Completed. Please sign in to Continue.");
                    $window.location.href = "login.html";
                }, function() {
                    alert("Error occured. Please try again.");
                    $scope.isProcessing = false;
                    $scope.RegisterBtnText = "Register";
                });
            };
        }
    ]);

还有我的html文件:

<!DOCTYPE html>
<!--[if !IE]><!-->
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<!--<![endif]-->
<!-- BEGIN HEAD -->
<head>
    <script src="/Metronic/plugins/jquery.min.js" type="text/javascript"></script>
    <script src="../assets/js/bootstrap.min.js"></script>
    <script src="/Scripts/angular.js"></script>
    <script src="/Scripts/angular-cookies.min.js"></script>
    <script src="/Scripts/angular-resource.min.js"></script>
    <script src="/Scripts/angular-sanitize.min.js"></script>
    <script src="/Scripts/angular-route.min.js"></script>
    <script src="/Scripts/angular-ui-router.min.js"></script>
    <script src="/Angular/app.js"></script>
    <script src="/Angular/controllers.js"></script>
    <script src="/Scripts/angular-local-storage.min.js"></script>
    <script src="/Scripts/loading-bar.min.js"></script>
    <script src="/Angular/Services/authInterceptorService.js"></script>
</head>
<body class="login">
    <div class="content" ng-app="app">
        <!-- BEGIN REGISTRATION FORM -->
        <div class="register-form" ng-controller="signupController">
            <h3 class="font-green">Sign Up</h3>
            <p class="hint"> Enter your account details below: </p>
            <div class="form-group">
                <label class="control-label visible-ie8 visible-ie9">Email</label>
                <input class="form-control placeholder-no-fix" ng-model="registration.Email" type="text" autocomplete="off" placeholder="Email" name="username" />
            </div>
            <div class="form-group">
                <label class="control-label visible-ie8 visible-ie9">Password</label>
                <input class="form-control placeholder-no-fix" ng-model="registration.Password" type="password" autocomplete="off" id="register_password" placeholder="Password" name="password" />
            </div>
            <div class="form-group">
                <label class="control-label visible-ie8 visible-ie9">Re-type Your Password</label>
                <input class="form-control placeholder-no-fix" ng-model="registration.ConfirmPassword" type="password" autocomplete="off" placeholder="Re-type Your Password" name="rpassword" />
            </div>
            <div class="form-group">
                <label class="control-label visible-ie8 visible-ie9">Role</label>
                <select name="role" ng-change="CheckRole()" ng-model="registration.Role" class="form-control">
                    <option value="">Role</option>
                    <option value="Borrower">Borrower</option>
                    <option value="Introducer">Introducer</option>
                    <option value="Investor">Investor</option>
                    <option value="Valuer">Valuer</option>
                </select>
            </div>
            <div class="form-actions">
                <button type="button" id="register-back-btn" class="btn green btn-outline">Back</button>
                <button type="submit" id="register-submit-btn" class="btn btn-success uppercase pull-right" ng-click="signUp()" ng-disabled="isProcessing" value="{{RegisterBtnText}}">
                    Submit
                </button>
            </div>
        </div>
        <!-- END REGISTRATION FORM -->
    </div>
</body>
</html>

知道我错过了什么吗?

我收到此错误:

错误:[ng:areq] 参数“signupController”不是函数,未定义

【问题讨论】:

    标签: javascript angularjs angular angularjs-scope angularjs-controller


    【解决方案1】:

    您包含的 JS 文件顺序错误。

    目前是

    <script src="/Angular/app.js"></script>
    <script src="/Angular/controllers.js"></script>
    

    因此,您的 app.js 没有得到 app.controllers 的定义。

    应该是这样的

    <script src="/Angular/controllers.js"></script>
    <script src="/Angular/app.js"></script>
    

    【讨论】:

    • @Rijay-khan 感谢您的回复,但我在切换位置时遇到了同样的错误。当我将 app.js 一直推到列表底部时,我收到此错误:i.gyazo.com/c717bd341e7f7b7fd473190475214bc8.png 感谢您帮助我
    • 在哪个文件中定义了authServiceInterceptorProvider?
    • 定义为工厂还是服务?
    • 谢谢,那个拦截器使用了不同的应用声明。我将其设置为我的应用程序,现在可以完美运行。周末愉快!
    猜你喜欢
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2015-09-10
    • 2016-12-17
    • 2016-05-22
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多