当前位置: 首页 > news >正文

8-angular 要点温习-1

angualr 要点温习

1、一些 ng 指令

  • ng-disabled
    • true|false ,规定一个元素是否被禁止,但不会为隐藏
  • ng-keydown/ng-keypress/ng-keyup
  • ng-mousedown/ng-seenter 鼠标穿过

2、一些 angular 内置方法/类比 jq

  • angular.lowercase()
  • angular.uppercase()
  • angular.copy()
    • 深克隆
  • angular.forEach()
    • 类比 forEach
var objs = [{a: 1}, {a: 2}];  
angular.forEach(objs, function(data, index, array) {  
    //data等价于array[index]  
    console.log(data.a + '=' + array[index].a);  
});  
              
var objs = {"a":1,"b":2}  
angular.forEach(objs, function(data, index, array) {  
    //1 "a" {a: 1, b: 2}  
    console.log(data,index,array);  
});  
复制代码
  • 判断 JavaScript 对象类型
    • angular.isArray() || 如果类型是数组 返回 true
    • angular.isDate()
    • angular.isDefined()
    • angular.isElement()
    • angular.isFunction() 如果引用的是函数返回 true
    • angular.isNumber() 如果引用的是数字返回 true,如果输入框是input标签,要检测输入框内容是否为数字,则使用!isNaN($scope.myInput);
    • angular.isObject() 如果引用的是对象返回 true
    • angular.isString() 如果引用的是字符串返回 true
    • angular.isUndefined() 如果引用的未定义返回 true
    • angular.equals(a,b) 如果两个对象相等返回 true
    • *angular.fromJson() 反序列化 JSON 字符串
    • *angular.toJson() 序列化 JSON 字符串

3、创建多个 ng-app

  • angular 中自承认第一个 ng-app,通过 var app =angular.module("myApp",[]);即可获它的操作权;此时我们需要手动的初始化第二个 ng-app

  • angular.bootstrap 来手动添加

<div id="A1" ng-app="app1">  
    <input ng-model="name" type="text" placeholder="请输入姓名">  
    <p>我的姓名: {{name}}</p>  
</div>  
  
<div id="A2" ng-app="app2">  
    <input ng-model="age" type="number" placeholder="请输入年龄">  
    <p>我的年龄: {{age}}</p>  
</div>  
<script type="text/javascript">  
    var app1 = angular.module("app1", []); //自动加载  
    var app2 = angular.module("app2", []); //手动加载  
    angular.bootstrap(document.getElementById("A2"), ['app2']); // 手动加载2  
</script>  
复制代码

4、怎么在 angular 架构中创建编译元素

  • 添加新的元素则需要通过编译实现,编译的目的在于让添加的脚本代码支持ng-?指令及{{}}表单式。展示代码如下:
<div ng-app="myApp" ng-controller="myCtrl as ctrl">
	<div id="addEle"></div>
</div>
<script>
	var app = angular.module("myApp", []);
	app.controller("myCtrl", function($scope, $compile) {
		var vm = this;
		vm.msg = 'hello';
		// 创建编译函数
		var compileFn = $compile('<div>{{ctrl.msg}}</div>');
		// 传入scope,得到编译好的dom对象(已封装为jqlite对象)
		// 也可以用$scope.$new()创建继承的作用域
		var $dom = compileFn($scope);
		//返回的$dom是一个jQLite(jQuery的子集)对象
		console.log($dom);
		// 添加到文档中
		var jqLite = angular.element(document.getElementById("addEle"));
		jqLite.append($dom);
		//$dom.remove(); //移除语句
	});
</script>
复制代码

5、jqLite的应用


var jqEle = $("#myDiv"); //jquery写法
var jqLite = angular.element(document.getElementById("myDiv")); //jqlite写法


复制代码

6、过滤器

常用的一些过滤器,也可以自己封装 和 补充 service 来自带参数。

  • uppercase
  • lowercase
  • currency 化为货币符号
  • number 格式化为数字
  • date 时间
  • orderBy: "?":某属性按从小到大排序 ( orderBy:'-id' , id 降序排列 ) ( orderBy:'id', id 升序排列 )
//自定义过滤器  
app.filter('addOne', function() {  
    return function(i) {  
        var result = 0;  
        if(!isNaN(i)) {  
            result = 1 + parseInt(i);  
        }  
        return result;  
    }  
});  

//自定义过滤器带参数  
app.service('addOneService', function() {  
    this.add = function(i) {  
        var result = 0;  
        if(!isNaN(i)) {  
            result = 1 + parseInt(i);  
        }  
        return result;  
    }  
});  
复制代码

7、表单

 $error.required 唯一值验证
 $error.email 文本输入内置电子邮件验证。
 $error.number 带有数量验证的文本输入。也可以有最小和最大值的附加属性。
 $error.date 带有输入日期文本输入。
 $error.url 带有输入验证的URL文本输入。
 $error.minlength,参数范围需从input中ng-minlength设置
 $error.maxlength,参数范围需从input中ng-maxlength设置
 $error.pattern,正则表达式需从input中ng-pattern设置
 $dirty 表单有填写记录 
 $pristine 表单没有填写记录
 $valid 字段内容合法的,如formname.$valid
 $invalid 字段内容是非法的 
复制代码

8、switch 和 switch-when 的使用

  • 类似于 JavaScript 的 switch
<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>demo-ng-switch</title>
		<script type="text/javascript" src="../js/libs/angular/angular.js" ></script>
	</head>

	<body>
		<div ng-app="myApp" ng-controller="myCtrl">
			<form>
				选择一个选项:
				<input type="radio" ng-model="myVar" value="dogs">Dogs
				<input type="radio" ng-model="myVar" value="tuts">Tutorials
				<input type="radio" ng-model="myVar" value="cars">Cars
			</form>

			<div ng-switch="myVar">
				<div ng-switch-when="dogs">
					<h1>Dogs</h1>
					<p>Welcome to a world of dogs.</p>
				</div>
				<div ng-switch-when="tuts">
					<h1>Tutorials</h1>
					<p>Learn from examples.</p>
				</div>
				<div ng-switch-when="cars">
					<h1>Cars</h1>
					<p>Read about cars.</p>
				</div>
			</div>
		</div>

		<script>
			var app = angular.module("myApp", []);
			app.controller("myCtrl", function($scope) {});
		</script>
	</body>

</html>
复制代码

相关文章:

  • 收集一些网络检测和分析工具
  • 滴滴发布智慧交通战略产品“交通大脑”
  • 如何运用互联网手机等新兴媒体开展群众工作
  • 专家称GIS技术拥抱大数据已成热潮
  • POJ 2392 Space Elevator(多重背包 + 倍增优化)
  • CSS:让IE6/IE7支持display:inline-block
  • 动态
  • CentOS 6.3安装(详细图解教程)
  • 「镁客·请讲」EBER:智能出行和智能健康将成为未来行业发展的最大蓝海!
  • 设计中默认样式的强大威力
  • Javascript是个好东西(广大人民的智慧是无穷的):
  • 【iCore4 双核心板_uC/OS-II】例程十:信号量集
  • SharePoint 2010【PowerShell 系列】应用总结
  • C语言-数组与指针
  • 背水一战 Windows 10 (77) - 控件(控件基类): ContentControl, UserControl, Page
  • Android单元测试 - 几个重要问题
  • C语言笔记(第一章:C语言编程)
  • Github访问慢解决办法
  • golang中接口赋值与方法集
  • happypack两次报错的问题
  • PHP 7 修改了什么呢 -- 2
  • Python中eval与exec的使用及区别
  • React 快速上手 - 07 前端路由 react-router
  • React中的“虫洞”——Context
  • TCP拥塞控制
  • 初识 beanstalkd
  • 聚类分析——Kmeans
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 一个SAP顾问在美国的这些年
  • 赢得Docker挑战最佳实践
  • 怎么把视频里的音乐提取出来
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)Android开发优化---------UI优化
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (顺序)容器的好伴侣 --- 容器适配器
  • (算法)Travel Information Center
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (原)本想说脏话,奈何已放下
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .skip() 和 .only() 的使用
  • // an array of int
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [20170705]diff比较执行结果的内容.txt
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——