[转]AngularJS+UI Router(1) 多步表单
本文转自:https://www.zybuluo.com/dreamapplehappy/note/54448
多步表单的实现
在线demo演示地址https://rawgit.com/dreamapplehappy/AngularJS-uiRouter/master/index.html
文件的构成
说明:先新建一个文件夹(例如:router),然后新建下面的文件。
- index.html
- form.html
- form-required.html
- form-optional.html
- form-confirm.html
- myApp.js
- myStyle.css
详解每个文件的代码
- index.html 代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>多步表单</title>
<link rel="stylesheet" href="lib/bootstrap.min.css">
<link rel="stylesheet" href="myStyle.css">
<script src="lib/angular.js"></script>
<script src="lib/angular-ui-router.js"></script>
<script src="lib/angular-animate.js"></script>
<script src="myApp.js"></script>
</head>
<body ng-app="myModule">
<div class="container" ng-controller="myFormController">
<div ui-view></div>
</div>
</body>
</html>
代码说明:
ng-app="myModule" 表示AngularJS启动的开始
ng-controller="myFormController" 表示这整个div由控制器myFormController来控制
新建一个lib文件夹,放在router目录下
外部引入的angular.js,angular-ui-router.js,angular-animate.js,bootstrap.min.css都放在这个文件夹中
这个demo的路由配置放在myApp.js里面
demo的样式文件放在myStyle.css里面
<div ui-view></div>这个div包含ui-view说明里面放置的是html模板
- form.html
<div class="row">
<div class="col-sm-8 col-sm-offset-2">
<div class="form-container">
<div>
<h2>欢迎注册Dreamapple!</h2>
<div class="control">
<a ui-sref-active="active" ui-sref=".required"><span>1</span> 基本信息</a>
<a ui-sref-active="active" ui-sref=".optional"><span>2</span> 选填项</a>
<a ui-sref-active="active" ui-sref=".confirm"><span>3</span> 确认结果</a>
</div>
<hr />
</div>
<form ng-submit="submit()">
<div class="form-view" ui-view></div>
</form>
</div>
<hr />
<pre>
{{ formData }}
</pre>
</div>
</div>
代码说明:
ui-sref=".required"说明当点击这个链接的时候路由会跳转到相应的包含required状态的路由中。
ng-submit="submit()"说明表单提交的时候运行的函数
- myApp.js 最重要的一部分
//定义自己的module(myModule)
//中括号中的是这个module的依赖
var myModule = angular.module("myModule", ['ngAnimate','ui.router']);
myModule.config(['$stateProvider','$urlRouterProvider',function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('form',{
url:'/form',
templateUrl:'form.html',
controller:'myFormController' //指明控制器
})
.state('form.required',{
url:'/required',
templateUrl:'form-required.html'
})
.state('form.optional',{
url:'/optional',
templateUrl:'form-optional.html'
})
.state('form.confirm',{
url:'/confirm',
templateUrl:'form-confirm.html'
});
$urlRouterProvider.otherwise('/form/required'); //匹配所有不在上面的路由
}]);
//定义模块的控制器
myModule.controller('myFormController', ['$scope', function($scope){
$scope.formData = {};
$scope.submit = function() {
alert("Cool, you have registered!");
};
}]);
代码说明都包含在注释中
- form-required.html
<div class="form-group">
<label for="username">用户名:</label>
<input type="text" class="form-control" name="username" ng-model="formData.username">
</div>
<div class="form-group">
<label for="password">密码:</label>
<input type="password" class="form-control" name="password" ng-model="formData.password">
</div>
<div class="form-group">
<label for="cp">确认密码:</label>
<input type="password" class="form-control" name="cp" ng-model="formData.cp">
</div>
<div class="form-group">
<label for="email">邮箱:</label>
<input type="email" class="form-control" name="email" ng-model="formData.email">
</div>
<div class="form-group">
<button ui-sref-active="active" ui-sref="form.optional" class="btn btn-success">下一项</button>
</div>
- form-optional.html
<div class="form-group">
<label for="gender">您的性别:</label>
<input type="radio" value="man" class="form-control" ng-model="formData.gender">男
<input type="radio" value="woman" class="form-control" ng-model="formData.gender">女
</div>
<br />
<div class="form-group">
<button ui-sref-active="active" ui-sref="form.required" class="btn btn-success">上一项</button>
<button ui-sref-active="active" ui-sref="form.confirm" class="btn btn-success">下一项</button>
</div>
- form-confirm.html
<div class="form-group">
<label for="interest">选择你喜欢的语言:</label>
<input type="checkbox" value=".net" class="form-control" ng-model="formData.interestA">.NET
<input type="checkbox" value="php" class="form-control" ng-model="formData.interestB">PHP
<input type="checkbox" value="nodejs" class="form-control" ng-model="formData.interestC">NodeJS
<hr />
<button type="submit" class="btn btn-primary">注册</button>
</div>
- myStyle.css
@keyframes slideToRight {
from { transform:translateX(100%); }
to { transform: translateX(0); }
}
@-moz-keyframes slideToRight {
from { -moz-transform:translateX(100%); }
to { -moz-transform: translateX(0); }
}
@-webkit-keyframes slideToRight {
from { -webkit-transform:translateX(100%); }
to { -webkit-transform: translateX(0); }
}
.form-view.ng-enter{
position: absolute;
transition:0.5s all linear;
-moz-transition:0.5s all linear;
-webkit-transition:0.5s all linear;
}
.form-view.ng-enter{
-webkit-animation:slideToRight 0.5s both linear;
-moz-animation:slideToRight 0.5s both linear;
animation:slideToRight 0.5s both linear;
}
div.control a.active span{
background-color: #666;
color: #FFF;
}
div.control a{
text-decoration: none;
display: inline-block;
width: 20%;
}
div.control a span{
display: inline-block;
width: 36px;
height: 36px;
border-radius: 36px;
text-align: center;
line-height: 36px;
}
.form-container{
height: 399px;
}
.textarea{
width: 100% !important;
height: 60px !important;
}
[转]AngularJS+UI Router(1) 多步表单的更多相关文章
- 【js类库AngularJs】学习angularJs的指令(包括常见表单验证,隐藏等功能)
[js类库AngularJs]学习angularJs的指令(包括常见表单验证,隐藏等功能) AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀 ...
- angularJS ui router 多视图单独刷新问题
场景:视图层级如下 view1 --view11 --view111 需求:view11的一个动作过后,单独刷新view12 解决方式:修改层级设计 view1 --view11 --view111 ...
- [AngularJS] AngularJS系列(3) 中级篇之表单验证
目录 基本验证 验证插件messages 自定义验证 基本验证 <form name="form" novalidate ng-app> <span>{{f ...
- AngularJS快速入门指南13:表单
一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...
- AngularJs轻松入门(六)表单校验
表单数据的校验对于提高WEB安全性意义不大,因为服务器接收到的请求不一定来自我们的前端页面,有可能来自别的站点,黑客可以自己做一个表单,把数据提交到我们的服务器(即跨站伪造请求),这样就绕过了前端页面 ...
- 微信小程序组件构建UI界面小练手 —— 表单登录注册微信小程序
通过微信小程序中丰富的表单组件来完成登录界面.手机快速注册界面.企业用户注册界面的微信小程序设计. 将会用到view视图容器组件.button按钮组件.image图片组件.input输入框组件.che ...
- 简单web页面第一步---表单
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncod ...
- Angularjs ui router,路由嵌套 父controller执行问题
解决方式来源:https://stackoverflow.com/questions/25316591/angularjs-ui-router-state-reload-child-state-onl ...
- AngularJS 使用 UI Router 实现表单向导
Today we will be using AngularJS and the great UI Router and the Angular ngAnimate module to create ...
随机推荐
- 《Effective Java》第8章 通用程序设计
第47条:了解和使用类库 Top 100 Java Libraries on Github 2016 Library Number of Projects Type % of projects jun ...
- 《Effective Java》第9章 异常
第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常 Java程序设计语言提供了三种可抛出结构(throwable) ;受检的异常(checked exception)运行时异常(run-t ...
- repo的一些用法
repo的用法注:repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载.管理Android项目的软件仓库.(也就是说,他是用来管理给git管理的一个个仓库的) 1.下载r ...
- ASP.NET MVC Razor语法及实例
1.混合HTML与Razor脚本 知识点:(1).cshtml怎样引用访问数据, (2).if for 与html嵌套 @using System.Data @using CIIC.TCP.Enti ...
- 几款Web服务器性能压力测试工具
一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载. 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般 ...
- 正经学C#_委托
以前不会,甚至连想去学都没想.啧啧啧,我是何等朽木啊. 我先不说其中理念,或者原理,咱就先说最简单的用法.怎么去使用委托. 委托 Delegate 使用委托,就要先定义一个委托.定义一个委托就要先声明 ...
- [Windows] 程序生成出现语法错误: 意外的令牌“标识符”,预期的令牌为“类型说明符”
程序生成出现语法错误: 意外的令牌“标识符”,预期的令牌为“类型说明符” 将平台工具集改为VS 2015 (v140) ,重新编译即可
- yyyyMMdd必须严格遵守大小写规范
c#中ToString("yyyyMMdd") 与ToString("yyyymmdd")区别 string a= DateTime.Now.ToString( ...
- 【BZOJ 2120】【国家集训队 2011】【数颜色】(莫队)
题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2 ...
- 处理Json接收日期格式问题
//处理Json接收日期格式问题function getNormalDate(dateNormal) { var receiveDate = new Date(parseInt(dateNormal. ...