javascript - Angular.js 模板不会显示在 Angular-route url 上

标签 javascript angularjs angular-routing

我正在尝试学习 angular.js,我想使用模板通过 Angular-route 加载表单 html。

我认为我正确设置了所有内容,但是 html 表单不会加载到我在配置中设置的 url 上。我为测试设置的其他配置网址也不起作用。 这是代码

index.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="/css/style.css">
</head>
<body ng-app="EventPlanner">
    <div ng-view></div>
</body>
</html>
<script type="text/javascript" src="/bower_components/angular/angular.min.js"></script>
<script type="text/javascript" src="/bower_components/angular-route/angular-route.min.js"></script>

<script type="text/javascript" src="/js/angular/ng_config.js"></script>
<script type="text/javascript" src="/js/angular/ng_controller.js"></script>

ng_config.js

angular.module("EventPlanner", ["ngRoute"])
.config(["$routeProvider", function($routeProvider){
    $routeProvider.when("/", {
        templateUrl: "template/register.html"
    })
    .when("/make_plan", {
        template: "<h1>make plans</h1>"
    });
}]);

ng_controller.js

angular.module("EventPlanner", [])
    .controller("registerControl", [function(){
        var self = this;
        self.submit = function(){
            location.href = "#/make_plan";
        };
    }]);

注册.html

<div class="main container">
<div class="row" ng-controller="registerControl as regi">
    <form ng-submit="regi.submit()" name="regiForm" class="register col-xs-12">
        <label class="col-xs-12" for="name">
            <span class="col-xs-2">Name</span>
            <input ng-model="regi.username" class="col-xs-5" type="text" id="name" name="name" required>
            <span class="col-xs-5" ng-show="regiForm.name.$error.required">This feild is required</span>
        </label>
        <label class="col-xs-12" for="email">
            <span class="col-xs-2">Email</span><input ng-model="regi.email" class="col-xs-5" type="email" id="email" name="email" required>
            <span class="col-xs-5" ng-show="regiForm.email.$error.required">This feild is required</span>
        </label>
        <label class="col-xs-12" for="birthday">
            <span class="col-xs-2">Birthday</span><input ng-model="regi.birthday" class="col-xs-5"  type="date" id="birthday">
        </label>
        <label class="col-xs-12" for="password">
            <span class="col-xs-2">Password</span>
            <input ng-model="regi.password" class="col-xs-5" type="password" id="password" name="password"
            ng-pattern="/^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,16}$/" ng-minlength="6" ng-maxlength="16" required>

        </label>
        <ul class="col-xs-7">
            <li class="col-xs-12" ng-show="regiForm.password.$error.pattern">Must contain one lower &amp; uppercase letter, and one non-alpha character (a number or a symbol.)</li>
            <li class="col-xs-12" ng-show="regiForm.password.$error.minlength">Password Must be more than 5 characters</li>
            <li class="col-xs-12" ng-show="regiForm.password.$error.maxlength">Password Must be less than 20 characters</li>

            <li class="col-xs-12" ng-show="regiForm.name.$dirty && regiForm.name.$error.required">Please enter name
            </li>
        </ul>
        <div class="col-xs-7 no-padding">
            <button type="submit" ng-disabled="regiForm.$invalid" class="btn">Submit</button>
        </div>

    </form>
</div>  

过去几天我一遍又一遍地查看代码,我无法弄清楚我做错了什么。

请帮忙。

谢谢。

最佳答案

您的代码中有错误。

ng_config.js

angular.module("EventPlanner", ["ngRoute"]) // correct!
.config(["$routeProvider", function($routeProvider){
    $routeProvider.when("/", {
        templateUrl: "template/register.html"
    })
    .when("/make_plan", {
        template: "<h1>make plans</h1>"
    });
}]);

以上是正确的,您正在定义一个新模块“EventPlanner”并定义一个依赖项数组。

ng_controller.js

angular.module("EventPlanner", []) // incorrect!!
    .controller("registerControl", [function(){
        var self = this;
        self.submit = function(){
            location.href = "#/make_plan";
        };
    }]);

以上不正确。您不再需要传递空数组,因为您已经创建了模块“EventPlanner”。

上面实际发生的是您正在重新定义模块“EventPlanner”并覆盖您之前的声明。

将 ng_controller.js 更改为以下内容:

angular.module("EventPlanner") // fixed
    .controller("registerControl", [function(){
        var self = this;
        self.submit = function(){
            location.href = "#/make_plan";
        };
    }]);

现在,当解析 ng_controller.js 时,它告诉 Angular 它希望为之前定义的名为“EventPlanner”的模块创建一个“registerController”。希望这是有道理的。

关于javascript - Angular.js 模板不会显示在 Angular-route url 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38059594/

相关文章:

javascript - 如何执行一个功能,无论它是正常的还是携带的,并产生相同的结果?

javascript - angularjs 1.5 组件一种方式绑定(bind)不适用于 setInterval

angularjs - $location/html5和hashbang模式切换/链接重写

angular - 类型错误 : Invalid Event Target - But just by using direct Route

javascript - Angular js路由,500内部服务器错误

javascript - 在运行时更新常见的 AngularJS HTTP header

javascript - 没有弹出窗口的Facebook登录?

javascript - 在 jQuery 中如何定义是对同一元素的常规单击还是双击?

Angularjs 过滤器的确切数量

javascript - 如何处理 Angular 1.x 组件 URL 根?