首页 > angularjs 路由页面指令绑定的问题

angularjs 路由页面指令绑定的问题

用户访问首页的时候,会默认路由到注册页面register.htm,而register.htm中定义了属性指令ensure-unique,但是directive.js中指令没有绑定上,指令没有起作用,不知道是何原因,前端没有报错,请帮忙看下
首页index.htm

<html lang="en" ng-app="myApp">
<head>
    <meta charset="UTF-8">

    <link rel="stylesheet" href="js/bower_components/bootstrap/dist/css/bootstrap.min.css">
    <style>
        body {
            padding-top: 40px;
            padding-bottom: 40px;
            background-color: #f5f5f5;
        }
        .form-signin {
            max-width: 400px;
            padding: 19px 29px 29px;
            margin: 0 auto 20px;
            background-color: #fff;
            border: 1px solid #e5e5e5;
            -webkit-border-radius: 5px;
            -moz-border-radius: 5px;
            border-radius: 5px;
            -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
            -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
            box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
        }
    </style>
    <title>登陆页面</title>
</head>
<body>
<div class="container">
    <div ng-view></div>
</div>
<script src="js/bower_components/jquery/dist/jquery.min.js"></script>
<script src="js/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="js/bower_components/angular/angular.js"></script>
<script src="js/bower_components/angular-bootstrap/ui-bootstrap.min.js"></script>
<script src="js/bower_components/angular/angular-route.min.js"></script>
<script src="js/service.js"></script>
<script src="js/app.js"></script>
</body>
</html>

service.js是空的,留着以后用

app.js

myApp = angular.module("myApp", ["ui.bootstrap", "ngRoute"]);

myApp.config(['$routeProvider',
    function ($routeProvider) {
        $routeProvider.
            when('/index', {
                templateUrl: 'templates/index.htm'
            }).
            when('/register', {
                templateUrl: 'templates/register.htm'
            }).
            when('/login', {
                templateUrl: 'templates/login.htm'
            }).
            otherwise({
                redirectTo: '/register'
            });
    }]);

register.htm 注册页面,这里增加了属性指令ensure-unique

<div class="col-md-4 col-md-offset-4 text-left">
    <form name="registerForm" class="form-signin" method="post" action="register.html">
        <div class="form-group"
             ng-class="{'has-error':registerForm.email.$touched && registerForm.email.$dirty && registerForm.email.$invalid}">
            <label for="email">Email Address</label>
            <input type="email" id="email" name="email" ng-model="email" required class="form-control"
                   ensure-unique="email" placeholder="Email Address"/>

            <p class="help-block"
               ng-show="registerForm.email.$touched && registerForm.email.$dirty && registerForm.email.$invalid">
                <span ng-show="registerForm.email.$error.required">邮件名不能为空</span>
                <span ng-show="registerForm.email.$error.email">非法的邮箱地址</span>
            </p>
        </div>
        <div class="form-group"
             ng-class="{'has-error':registerForm.username.$touched && registerForm.username.$dirty && registerForm.username.$invalid}">
            <label for="username">Username</label>
            <input id="username" name="username" ng-model="username" class="form-control"
                   ensure-unique="username" placeholder="Username" required/>

            <p class="help-block"
               ng-show="registerForm.username.$touched && registerForm.username.$dirty && registerForm.username.$invalid">
                <span ng-show="registerForm.username.$error.required">用户名不能为空</span>
            </p>
        </div>
        <div class="form-group"
             ng-class="{'has-error':registerForm.password.$touched && registerForm.password.$dirty && registerForm.password.$invalid}">
            <label for="password">Password</label>
            <input type="password" id="password" name="password" required ng-minlength="6" ng-maxlength="10"
                   ng-model="password" class="form-control" placeholder="Password"/>

            <p class="help-block"
               ng-show="registerForm.password.$touched && registerForm.password.$dirty && registerForm.password.$invalid">
                <span ng-show="registerForm.password.$error.required">密码不能为空</span>
                <span ng-show="registerForm.password.$error.minlength">密码长度至少为6</span>
                <span ng-show="registerForm.password.$error.maxlength">密码长度不能超过10</span>
            </p>
        </div>
        <div class="form-group"
             ng-class="{'has-error':registerForm.repassword.$touched && registerForm.password.$dirty && registerForm.repassword.$dirty && (repassword != password)}">
            <label for="repassword">Repassword</label>
            <input type="password" id="repassword" name="repassword" ng-model="repassword" class="form-control"
                   placeholder="Repassword"/>

            <p class="help-block"
               ng-show="registerForm.repassword.$touched && registerForm.password.$dirty && registerForm.repassword.$dirty && (repassword != password)">
                <span>密码与重复密码不一致</span>
            </p>
        </div>
        <button type="submit" class="btn btn-default">Submit</button>
    </form>
</div>
<script src="js/directive.js"></script>

directive.js

myAppDirective=angular.module("myAppDirective",[]);

myAppDirective.directive('ensureUnique', ['$http', function ($http) {
    return {
        require: 'ngModel',
        link: function (scope, ele, attrs, c) {
            console.log("executed!");
            ele.bind('blur', function () {
                if (attrs.ensureUnique == "username") {
                    $http({
                        method: 'POST',
                        url: 'check/' + attrs.ensureUnique + ".html",
                        data: {"username": scope.username}
                    }).success(function (data, status, headers, cfg) {
                        c.$setValidity('unique', true);
                    }).error(function (data, status, headers, cfg) {
                        c.$setValidity('unique', false);
                    });
                } else if (attrs.ensureUnique == "email") {
                    $http({
                        method: 'POST',
                        url: 'check/' + attrs.ensureUnique + ".html",
                        data: {"email": scope.email}
                    }).success(function (data, status, headers, cfg) {
                        c.$setValidity('unique', true);
                    }).error(function (data, status, headers, cfg) {
                        c.$setValidity('unique', false);
                    });
                }
            });
        }
    }
}]);

已经解决了,没有指令的module注入到myApp的module中

【热门文章】
【热门文章】