javascript - 在 AngularJS 中使用 $routeProvider 将 Controller 分配给表单模板

标签 javascript angularjs angularjs-controller

我正在构建我的第一个 Angular 应用程序,从一个简单的登录表单开始。我从部分加载表单,但是当我尝试提交表单时,控制台没有记录任何内容,即我假设我的 authenticate() 方法未被调用。我的 app.js 有以下定义:

'use strict';

angular.module('spForums',[])
.config(['$routeProvider','$locationProvider',function($routeProvider,$locationProvider) {
    $routeProvider.when('/login', {
        templateUrl: 'static/partials/login.html',
        controller: loginController,
        controllerAs: 'login'
    });

    $locationProvider.html5Mode(true);
}])

这是 Controller ,在单独的 controller.js 中定义:

'use strict';

function loginController() {
    this.email = '';
    this.password = '';

    this.authenticate = function () {
        console.log(this.email);
        console.log(this.password);
    };
};

这是部分内容,login.html:

<form class="form-signin" novalidate ng-submit="login.authenticate()">
  <h2 class="form-signin-heading">Please sign in</h2>
  <label for="inputEmail" class="sr-only">Email address</label>
  <input type="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus ng-model="login.email">
  <label for="inputPassword" class="sr-only">Password</label>
  <input type="password"  ng-model="login.password" id="inputPassword" class="form-control" placeholder="Password" required>
  <div class="checkbox">
    <label>
      <input type="checkbox" value="remember-me"> Remember me
    </label>
  </div>
  <input class="btn btn-primary" type="submit" value="Sign-in">
</form>

这是 index.html 的相关部分,或者在我的例子中,forum.html 包括部分内容:

<!doctype html>
<html lang="en" ng-app="spForums">
<head>
    <script type="text/javascript" src="/static/js/lib/angular.min.js"></script>
    <script type="text/javascript" src="/static/js/lib/angular-resource.min.js"></script>
</head>

<body>
    <div class="container" id="forumcontainer" ng-view>
    </div> <!-- /container -->

    <script type="text/javascript" src="/static/js/app.js"></script>
    <script type="text/javascript" src="/static/js/controller.js"></script>
</body>
</html>

我想以我是 Angular-JS 新手来结束本文。就像我刚刚看到一堆教程一样,这是我的第一个应用程序。请告诉我哪里错了。

编辑:-我正在使用 Angular-JS 版本 1.0.7。

最佳答案

您需要包含 ngRoute模块到您的应用程序中,默认情况下不提供它:

<head>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <script src="/static/js/lib/angular.min.js"></script>
    <script src="/static/js/lib/angular-route.min.js"></script>
    <script src="/static/js/lib/angular-resource.min.js"></script>
</head>

请注意,您还需要定义 base href 标记,因为您使用的是 HTML5 模式。

然后定义具有必要依赖项的模块:

angular.module('spForums', ['ngRoute', 'ngResource'])

关于javascript - 在 AngularJS 中使用 $routeProvider 将 Controller 分配给表单模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30544095/

相关文章:

javascript - 点击图片后面包屑向左移动

javascript - 如何在 d3 中显示分组条形图数据右侧的第二个 y 轴

javascript - Jquery函数中的angularJS : Uncaught TypeError: Cannot read property 'noDisagree' of undefined

javascript - 如何比较 Angular 元素与 jQuery 元素

javascript - 使用 angular.js 中的输入从指令调用 Controller

javascript - Chrome 扩展程序可通过扩展程序弹出窗口中的按钮更改 DOM

javascript - 如何制作下拉菜单?

javascript - AngularJS:路由提供者将 "/"更改为 %2F

javascript - 使用 AngularJS 显示 div

angularjs - 在 AngularJS 中控制一个 Controller 中的多个 View