加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 找不到角度控制器

发布时间:2020-12-17 17:14:46 所属栏目:安全 来源:网络整理
导读:问题定义 我是第一次使用AngularJS的ngRoute模块,我遇到了一些麻烦.我有一个index.cshtml页面,我通过设置ng-app来引用我的routingModule.我还有一个ng-view,这样当我点击“新帐户”时,它会在ng-view中加载register.cshtml,或者如果我点击“登录”,它将在ng-v
问题定义

我是第一次使用AngularJS的ngRoute模块,我遇到了一些麻烦.我有一个index.cshtml页面,我通过设置ng-app来引用我的routingModule.我还有一个ng-view,这样当我点击“新帐户”时,它会在ng-view中加载register.cshtml,或者如果我点击“登录”,它将在ng-view中加载authenticate.cshtml.

路由按预期工作,因为当我单击索引页面上的链接时,我可以看到ng-view中的寄存器和验证页面加载.但我为registerModule.js中的寄存器和身份验证页面设置的控制器似乎不存在.

点击索引页面上的“新帐户”时,我得到这个error.
当我点击索引页面上的“登录”时,我得到了相同的error

我已经添加了下面解决问题所需的所有javascript和html文件.任何帮助将非常感激.

Webroot结构

routingModule.js

var routingModule = angular.module("routingModule",['ngRoute'])
    .config(function ($routeProvider) {
        $routeProvider.when('/account/register',{ templateUrl: '/account/register/',controller: 'RegisterController' });
        $routeProvider.when('/account/authenticate',{ templateUrl: '/account/authenticate/',controller: 'AuthenticateController' });
})

index.cshtml

<!DOCTYPE html>
<html ng-app="routingModule">
<head>
    <base href="/" />

    <script src="~/Scripts/JQuery/jquery-2.1.3.js"></script>

    <script src="~/Scripts/Angular/angular.min.js"></script>
    <script src="~/Scripts/Angular/angular-route.min.js"></script>
    <script src="~/Scripts/Angular/angular-resource.min.js"></script>

    <link href="/Content/bootstrap.min.css" rel="stylesheet" />
    <link href="/Content/boostrap-hero.min.css" rel="stylesheet" />
    <script src="~/Scripts/Bootstrap/bootstrap.min.js"></script>

    <script src="/Scripts/app/Registration/registerModule.js"></script>
    <script src="/Scripts/App/Registration/registerService.js"></script>
    <script src="/Scripts/App/Registration/registerController.js"></script>
    <script src="/Scripts/App/Registration/validatePasswordDirective.js"></script>

    <script src="~/Scripts/App/Authentication/authenticateModule.js"></script>
    <script src="~/Scripts/App/Authentication/authenticateController.js"></script>
    <script src="~/Scripts/App/Authentication/authenticateService.js"></script>

    <script src="~/Scripts/App/Routing/routingModule.js"></script>

    <meta name="viewport" content="width=device-width" />
    <title>AngularJS + ASP.NET MVC</title>
</head>

<body>
    <div class="container">
        <div class="row">
            <div class="navbar navbar-default">
                <div class="navbar-header">
                    <ul class="nav navbar-nav">
                        <li><span class="navbar-brand">AngularJS + ASP.NET Playground</span></li>
                    </ul>
                </div>
                <div class="navbar-collapse collapse">
                    <ul class="nav navbar-nav">
                        <li> <a href="/#/home/index">Home</a></li>
                    </ul>
                    <ul class="nav navbar-nav navbar-right">
                        <li> <a href="/#/account/authenticate">Sign In</a></li>
                        <li> <a href="/#/account/register">New Account</a></li>
                    </ul>
                </div>
            </div>
        </div>

        <div ng-view></div>

    </div>

</body>

</html>

register.cshtml

<form name="registerForm" novalidate>
    <div class="row">
        <div class="col-md-10">
            <h2>Create Account</h2>
        </div>

        <div class="col-md-3">

            <div class="form-group">
                <label>Username</label>
                <input type="text" name="userName" ng-model="user.userName" class="form-control" required />
                <div class="text-danger" ng-show="registerForm.userName.$error.required && registerForm.userName.$dirty">Please enter your first name</div>
            </div>

            <div class="form-group">
                <label>Email</label>
                <input type="text" name="email" ng-model="user.email" class="form-control" required ng-pattern="/^[_a-z0-9]+(.[_a-z0-9]+)*&#64[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$/" />
                <div class="text-danger" ng-show="registerForm.email.$error.required && registerForm.email.$dirty">Please enter a your email address</div>
                <div class="text-danger" ng-show="registerForm.email.$error.pattern && registerForm.email.$dirty">Invalid email address</div>
            </div>

            <div class="form-group">
                <label>Password</label>
                <input type="password" name="password" ng-model="user.password" class="form-control" required />
                <div class="text-danger" ng-show="registerForm.password.$error.required && registerForm.password.$dirty">Please enter a password</div>
            </div>

            <div class="form-group">
                <label>Confirm Password</label>
                <input type="password" name="passwordConfirm" ng-model="user.passwordConfirm" class="form-control" required compare-to="user.password" />
                <div class="text-danger" ng-show="registerForm.passwordConfirm.$error.required && registerForm.passwordConfirm.$dirty">Please repeat your password</div>
            </div>

            <div class="form-group">
                <button class="btn btn-default" ng-disabled="registerForm.$invalid" ng-click="register(user)">Create Account</button>
                <div style="color: red;" ng-show="errors.length > 0" ng-repeat="error in errors">{{error}}</div>
            </div>

        </div>
    </div>
</form>

authenticate.cshtml

<form name="loginForm" novalidate>

    <div class="row">
        <div class="col-md-10">
            <h2>Sign In</h2>
        </div>

        <div class="col-md-3">

            <div class="form-group">
                <label>Email</label>
                <input type="text" name="email" ng-model="user.email" class="form-control" required ng-pattern="/^[_a-z0-9]+(.[_a-z0-9]+)*&#64[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$/" />
                <div class="text-danger" ng-show="loginForm.email.$error.required && loginForm.email.$dirty">Please enter a your email address</div>
                <div class="text-danger" ng-show="loginForm.email.$error.pattern && loginForm.email.$dirty">Invalid email address</div>
            </div>

            <div class="form-group">
                <label>Password</label>
                <input type="password" name="password" ng-model="user.password" class="form-control" required />
                <div class="text-danger" ng-show="loginForm.password.$error.required && loginForm.password.$dirty">Please enter a password</div>
            </div>

            <div class="form-group">
                <button class="btn btn-default" ng-disabled="loginForm.$invalid" ng-click="authenticate(user)">Sign In</button>
                <div style="color: red;" ng-show="errors.length > 0" ng-repeat="error in errors">{{error}}</div>
            </div>

        </div>
    </div>
</form>

registerModule.js

var registerModule = angular.module("registerModule",["ngResource"]);

registerController.js

registerModule.controller("RegisterController",function ($scope,$location,registerService) {
    $scope.register = function (user) {
        $scope.errors = [];
        registerService.register(user).$promise.then(
            function () { $location.url('/home/index');},function (response){$scope.errors = response.data});
    };

});

registerService.js

registerModule.factory('registerService',function ($resource) {

    return {
        register: function(user) {
            return $resource('/api/account/register/').save(user);
        }
}
    
});

解决方法

从我在这里看到的,authenticationModule和registerModule作为routingModule的依赖项缺失:

var routingModule = angular.module("routingModule",['ngRoute','authenticationModule','registerModule'])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读