angular表单
angular的表单,点击确定进行创建,支持批量创建,表单验证有样式提醒;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<link rel="stylesheet" href="./../node_modules/bootstrap/dist/css/bootstrap.css">
<style>
fieldset{
border:1px solid black;
padding:10px;
position:relative;
}
</style> <script src="./../node_modules/angular/angular.js"></script>
<script src="form.controller.js"></script>
<body ng-app="app">
<!-- 控制器 -->
<div class="row form-group" ng-controller="form" style="width:50%;margin:100px auto">
<!-- 表单 -->
<form name="myForm">
<!-- 点击添加策略 -->
<button class="btn btn-primary" style="display:block;margin:5px auto;width:80%" ng-click="addScale()">
<span class="fa fa-plus" ></span>添加策略
</button>
<p ng-show="data.type=='1'&&expand.length==0 || data.type=='2'&&narrow.length==0" style="color:#c82e29;text-align:center">相同策略只能创建一次</p>
<!-- 循环生成 -->
<fieldset class="margin-10" ng-repeat="x in rules">
<!-- 点击关闭当前块 -->
<span class="glyphicon glyphicon-remove" style="position:absolute;cursor:pointer;top:10px;right:10px;z-index:1" ng-click="reduce($index)"></span>
<!-- ng-class="{类名:bool,'类名':bool2}" bool值表达式可以用{{}},myForm.inputName.$dirty是否修改,$valid验证是否通过; -->
<div class="col-md-5 margin-bottom-10" ng-class="{'has-success':myForm.{{'envs_name'+$index}}.$valid,'has-error':myForm.{{'envs_name'+$index}}.$invalid && myForm.{{'envs_name'+$index}}.$dirty}">
<label class="control-label">
<span class="symbol required"></span>请选择策略
</label><br>
<select class="form-control" style="width:100%" required name="{{'envs_name'+$index}}" ng-model="x.metric">
<option value="{{x}}" ng-repeat="x in expand">{{formatMetric(x)}}</option>
</select> </div>
<div class="col-md-2" style="padding:0">
<div style="margin-top:30px" class="text-center">{{data.type =="1"?"大于或等于":"小于或等于"}}</div>
</div>
<div class="col-md-5 margin-bottom-15" ng-class="{'has-success':myForm.{{'envs_value'+$index}}.$valid,'has-error':myForm.{{'envs_value'+$index}}.$invalid && myForm.{{'envs_value'+$index}}.$dirty}">
<label class="control-label"><span class="symbol required"></span>百分比</label><br>
<input class="form-control" style="width:100%" step="0.1" required ng-pattern="/^\d+(\.\d+)+$/" max="100" type="number" name="{{'envs_value'+$index}}" ng-model="x.threshold_value" >
<span ng-show="myForm.{{'envs_value'+$index}}.$invalid && myForm.{{'envs_value'+$index}}.$dirty" style="color:#c82e29">请输入0-100的小数</span>
</div> <div class="col-md-4 margin-bottom-10" ng-if="data.type ==1" ng-class="{'has-success':myForm.{{'envs_priority'+$index}}.$valid,'has-error':myForm.{{'envs_priority'+$index}}.$invalid && myForm.{{'envs_priority'+$index}}.$dirty}">
<label class="control-label">
<span class="symbol required"></span>优先级
<br>
</label>
<input class="form-control" style="width:100%" required type="number" name="{{'envs_priority'+$index}}" ng-model="x.priority">
</div>
<div class=" margin-bottom-10" ng-class="{'col-md-4':data.type==1,'col-md-6':data.type==2,'has-success':myForm.{{'envs_init'+$index}}.$valid,'has-error':myForm.{{'envs_init'+$index}}.$invalid && myForm.{{'envs_init'+$index}}.$dirty}">
<label class="control-label"><span class="symbol required"></span> 最{{data.type==1 ? "大":"小"}}容器数量</label><br>
<input style="width:100%" required type="number" min='1' name="{{'envs_init'+$index}}" ng-model="x.container_num">
<span ng-show="myForm.{{'envs_init'+$index}}.$invalid && myForm.{{'envs_init'+$index}}.$dirty" style="color:#c82e29">请输入不小于1的整数</span>
</div>
<div class=" margin-bottom-10" ng-class="{'col-md-4':data.type==1,'col-md-6':data.type==2,'has-success':myForm.{{'envs_step'+$index}}.$valid,'has-error':myForm.{{'envs_step'+$index}}.$invalid && myForm.{{'envs_step'+$index}}.$dirty}">
<label class="control-label"><span class="symbol required"></span> 每次扩缩容数量</label><br>
<input class="form-control" style="width:100%" min='1' required type="number" name="{{'envs_step'+$index}}" ng-model="x.step">
<span ng-show="myForm.{{'envs_step'+$index}}.$invalid && myForm.{{'envs_step'+$index}}.$dirty" style="color:#c82e29">请输入不小于1的整数</span>
</div> </fieldset> </form>
<button class="btn btn-primary btn-o pull-right" ng-click="ok(rules,myForm)">确定</button>
<button class="btn btn-primary btn-o pull-right" ng-click="cancel()">取消</button>
</div>
</body>
</html>
下面是js代码
var myModule = angular.module('app', []);
console.log(myModule);
myModule.controller("form",["$scope",function($scope){
    //数据初始化
    $scope.rules=[{}];
    $scope.data={
        type:1,
    }
    $scope.expand = [ "memory.usage.percent","cpu.usage.percent","thread.usage.number"]
    //点击添加策略,增加表单块
    $scope.addScale = function(){
        $scope.rules.push({});
    }
    //点击X,删除当前块
    $scope.reduce = function($index){
            $scope.rules.splice($index,1);
            if($scope.rules.length === 0){
                $scope.addScale();
            }
    }
    $scope.formatMetric = function(metric) {
            switch (metric) {
                case "memory.usage.percent":
                    return "内存平均值";
                case "cpu.usage.percent":
                    return "CPU 平均值";
                case "thread.usage.number":
                    return "JVM 线程数";
                default:
                    return ""
            }
        };
       //点击确定
     $scope.ok = function(myForm){
          if(myForm.$invalid){
                return ;
            }
            //..
     }
}])
最后效果:点击添加策略,会增加一块策略,右上角X点击关闭,当表单验证不通过时,显出红色,通过绿色,验证不通过点击确定不发送请求;

angular表单的更多相关文章
- Angular 表单(二) - 模板驱动表单
		import { Component, OnInit } from '@angular/core'; import { Hero} from '../hero'; @Component({ selec ... 
- angular表单经验分享
		原文 https://www.jianshu.com/p/af359bd04f32 大纲 1.表单的名字不可以和传入的值的名字相同 2.在模板驱动表单的时候要使用angular表单的验证功能,需要将n ... 
- Angular 表单验证类库 ngx-validator 1.0 正式发布
		背景介绍 之前写了一篇 <如何优雅的使用 Angular 表单验证>,结尾处介绍了统一验证反馈的类库 ngx-validator ,由于这段时间一直在新模块做微前端以及相关业务组件库, ... 
- Angular表单 (一)表单简介
		Angular 表单 angular提供了两种不同的方法来通过表单处理用户输入:响应式表单和模板驱动表单.二者都从视图中捕获用户输入事件.验证用户输入.创建表单模型.修改数据模型,并提供跟踪这些更改的 ... 
- Angular表单验证
		novalidate 去掉html5自带的验证 ng-minlength 规定输入文本的最小长度 ng-maxlength 规定输入文本的最大长度 ng-submit 接收一个方法名 ... 
- 简单的angular表单验证指令
		<html ng-app="myApp"> <head> <meta charset="UTF-8"> <title& ... 
- angular表单验证实例----可用的代码
		前段时间,公司做一个单页面,就是一个表单验证,早开始在菜鸟教程上关注了angular,所以下派上用场了 angular里面对于表单验证,设置了很多指令. 也就是说不用自己写一些逻辑,直接绑定指令就行. ... 
- 从浅入深剖析angular表单验证
		最近手上维护的组件剩下的BUG都是表单验证,而且公司的表单验证那块代码经历的几代人,里面的逻辑开始变得不清晰,而且代码结构不是很angular. 是很有必要深入了解表单验证. 入门之前,我觉得应该先了 ... 
- angular 表单验证
		最近在用angular写表单验证时 , 不小心把ng-model全替换删掉了, 然后发现之前写的验证都失效, 在查阅资料和反复修改摸索后, 发现angular中的表单验证, 都是基于ng-model的 ... 
随机推荐
- SSHD服务搭建
			SSH协议:安全外壳协议.为Secure Shell 缩写.SSH为建立在应用层和传输层基础上的安全协议. 1.检查SSH服务端安装情况 [root@rhel6_84 ~]# rpm -qpi / ... 
- winform中dataGridView隔行显示不同的背景色,鼠标移动上显示不同颜色,离开后变回原色
			winform中dataGridView隔行显示不同的背景色,鼠标移动上显示不同颜色,离开后变回原色 先设置奇数行颜色,这个有个自带的属性AlternatingRowsDefaultCellStyle ... 
- 解决ie6下不支持fix属性,模拟固定定位
			<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ... 
- 循环语句--while
			有一种循环叫死循环,一经触发,就运行个天荒地老.海枯石烂 #coding=utf-8 count=0 while True: print("你是风儿我是沙,缠缠绵绵到天涯...", ... 
- 黄聪:C#带cookie模拟登录百度
			#region 同步通过POST方式发送数据 /// <summary> /// 通过POST方式发送数据 /// </summary> /// <param name= ... 
- Java与C++程序在编译和运行上的区别
			Java.C++都属于高级语言,而计算机能认识执行的只是机器码(即二进制),所以高级语言都必须经过直接或间接的转换成汇编以后,才能运行: 对于C/C++这类高级计算机语言,它们的编译器(例如Unix下 ... 
- php中序列化与反序列化
			解析PHP多种序列化与反序列化的方法 序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更 ... 
- 停掉Linux固定的进程
			ps -ef | grep php 查看进程ID,和信息 kill -s 9 1827 相关命令 ps -ef , ps -aux , pgrep php , 
- upgrade to ubuntu14.04, ibus input
			升级后ibus拼音输入很奇怪,可能和其他输入法产生混淆.解决很简单,只要打开终端输入 ibus-daemon -drx 不用重启或者登出问题便解决. 
- Java使用Mysql数据库实现批量添加数据
			EmployeeDao.java //批处理添加数据 public int saveEmploeeBatch(){ int row = 0; try{ con = DBCon.getConn(); S ... 
