在 AngularJS 中使用 $routeProvider 将控制器分配给表单模板
Assigning controller to a form template with $routeProvider in AngularJS
我正在构建我的第一个 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.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'])
我正在构建我的第一个 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.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'])