多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # Angular中的ng模块的全局方法 Angular中的ng模块是Angular的核心模块,其中包含着一些默认启动的方法、指令、服务、过滤器等一些列组件供我们使用。我们重点来看看ng模块的全局方法。调用该方法都需要使用angular.调用 ## angular.lowercase() 转换成小写字母方法 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp='HZJ'; $scope.data=angular.lowercase(temp); }]); ~~~ ## angular.uppercase() 转换成大写字母方法. ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp = 'hzj'; $scope.data = angular.uppercase(temp); }]); ~~~ ## angular.isUndefined 确定数据是否为undefined ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp; $scope.data = angular.isUndefined(temp); }]); ~~~ ## angular.isDefined 确定数据是否为有效数据 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp2 = 'kk'; $scope.data = angular.isDefined(temp2); }]); ~~~ ## angular.isObject 确定数据是否是一个对象 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp1 = 'kk'; var temp2 = [1]; var temp3 = {name:'xx'}; var temp4 = null; //false $scope.data1 = angular.isObject(temp1); //true,数组也是对象 $scope.data2 = angular.isObject(temp2); //true $scope.data3 = angular.isObject(temp3); //false null不是一个有效的对象 $scope.data4 = angular.isObject(temp4); }]); ~~~ ## angular.isString 确定数据是否是一个字符串 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp1 = 'kk'; var temp2 = 123; var temp3 = [12]; var temp4 = {name:'hzj'}; //true $scope.data1 = angular.isString(temp1); //false $scope.data2 = angular.isString(temp2); //false $scope.data3 = angular.isString(temp3); //false $scope.data4 = angular.isString(temp4); }]); ~~~ ## angular.isNumber 确定数据是否是一个数字 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp1 = 'kk'; var temp2 = 123; var temp3 = [12]; var temp4 = {name:'hzj'}; var temp5 = NaN; var temp6 = Infinity; //false $scope.data1 = angular.isNumber(temp1); //true $scope.data2 = angular.isNumber(temp2); //false $scope.data3 = angular.isNumber(temp3); //false $scope.data4 = angular.isNumber(temp4); //true NaN会被判定为一个数字 $scope.data5 = angular.isNumber(temp5); //true Infinity会被判定为一个数字 $scope.data6 = angular.isNumber(temp6); }]); ~~~ ## angular.isDate 确定数据是否为一个日期 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp1 = new Date(); var temp2 = new Date().getTime(); var temp3 = '2008-01-01'; //true $scope.data1 = angular.isDate(temp1); //false 日期转换成的毫秒数不算一个日期对象 $scope.data2 = angular.isDate(temp2); //false $scope.data3 = angular.isDate(temp3); }]); ~~~ ## angular.isArray 确定数据是否为数组 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp1 = '123'; var temp2 = 123; var temp3 = [1, 2, 3]; var temp4 = {xxx: [1, 2, 3]}; //false $scope.data1 = angular.isArray(temp1); //false $scope.data2 = angular.isArray(temp2); //true $scope.data3 = angular.isArray(temp3); //false $scope.data4 = angular.isArray(temp4); }]); ~~~ ## angular.isFunction 确定数据是否为一个函数 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var temp1 = '123'; var temp2 = function () { }; var temp3 = new Function(); var temp4 = function () { return function () { }; }; //false $scope.data1 = angular.isFunction(temp1); //true $scope.data2 = angular.isFunction(temp2); //true $scope.data3 = angular.isFunction(temp3); //true $scope.data4 = angular.isFunction(temp4); }]); ~~~ ## angular.isElement 确定数据是否是一个DOM元素 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$window','$document','$scope', function ($window,$document,$scope) { var temp1 =$document[0]; var temp2 ='<div>aaaa</div>'; var temp3 = $document[0].getElementsByTagName('body')[0]; var temp4 = $window; // true $scope.data1 = angular.isElement(temp1); // false 字符串表示的dom元素不是dom元素 $scope.data2 = angular.isElement(temp2); // true $scope.data3 = angular.isElement(temp3); // false $window不是一个dom元素 $scope.data4 = angular.isElement(temp4); }]); ~~~ ## angular.forEach() angular提供的迭代器,迭代的数据可以是一个数组,也可以是一个对象 基本格式为: ~~~ angular.forEach(obj, fn); //如果迭代数组 angular.forEach(obj, fn(item,index,data)); //如果迭代对象 angular.forEach(obj, fn(key,value)); ~~~ ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { $scope.data1 = [1, 2, 3, 4, 5]; $scope.data2 = {name: 'hzj', sex: 'm', age: 18, score: 100}; $scope.data3 = [ { name: 'hzj', sex: 'm', age: 18, score: 100 }, { name: 'hzj1', sex: 'm', age: 19, score: 56 }, { name: 'hzj2', sex: 'w', age: 22, score: 89 } ]; //迭代数组 //item数组每一项【可选】 //index数组下标【可选】 //data数组原数据【可选】 angular.forEach($scope.data1, function (item, index, data) { console.log('item:' + item); console.log('index:' + index); console.log('data:' + data); }); //迭代对象【主要参数顺序,第一个是属性的值,第二个是属性的名称】 //value对象每个属性的值【可选】 //key对象每个属性的属性名称【可选】 angular.forEach($scope.data2, function (value, key) { console.log('key:' + key); console.log('value:' + value); }); //综合迭代数组里面每个元素都是对象 angular.forEach($scope.data3, function (item, index) { console.log('item:' + item.name); console.log('index:' + index); }); }]); ~~~ ## angular.extend 把原数据拷贝到目标数据 格式 ~~~ angular.extend(dst, src); ~~~ ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var data1 = [1,2,3]; var data2 = [7,8,9,5,6,7]; //数组extend //$scope.data2会覆盖掉$scope.data1中的前6个元素 $scope.result= angular.extend(data1,data2); //结果为:[7,8,9,5,6,7] console.log($scope.result); var stu1={name:'hzj',sex:'m'}; var stu2={scre:100,age:18}; $scope.result=angular.extend(stu1,stu2); //结果为{name: "xx", sex: "m", scre: 100, age: 18} console.log($scope.result); }]); ~~~ ## angular.noop 一个什么都不执行的函数,主要用于放置其它函数调用函数句柄的时候且为null的时候放置报错用的。 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { //函数一 var fun1 = function (a) { return a * 10; }; //函数二 //第一个参数为fn函数句柄 //第二个参数为传递第一个函数的参数 var fun2 = function (fn, b) { //这里使用了fn || angular.noop代表fn为null或者undefined的时候 //立即执行angular.noop,而angular.noop什么都做,防止了程序异常 return (fn || angular.noop)(b); }; var temp1 = fun2(null, 3); //结果为undefined //但不会引发异常 console.log(temp1); var temp2 = fun2(fun1, 3); //结果为30 console.log(temp2); }]); ~~~ ## angular.identity 一个什么都不执行的函数,主要用于放置其它函数调用函数句柄的时候且为null的时候放置报错用的,但是会返回原函数的第一个参数,不管第一个参数是什么 ###案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { //函数一 var fun1 = function (a) { return a * 10; }; //函数二 //第一个参数为fn函数句柄 //第二个参数为传递第一个函数的参数 var fun2 = function (fn, b) { //这里使用了fn || angular.noop代表fn为null或者undefined的时候 //立即执行angular.noop,而angular.noop什么都做,防止了程序异常 return (fn || angular.identity)(b); }; var temp1 = fun2(null, 3); //结果为3,返回第一个参数 //angular.noop与angular.identity不同的是angular.noop直接返回undefined,而angular.identity会返回第一个参数的有效值 //但不会引发异常 console.log(temp1); var temp2 = fun2(fun1, 3); //结果为30 console.log(temp2); }]); ~~~ ## angular.copy 深拷贝一个数组或者一个对象 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { var a1 = [1, 2, 3, 4, 5]; //深拷贝数组 var a2 = angular.copy(a1); console.log(a2); var o1={name:'hzj',classes:{name:'c1',count:100}}; //深拷贝对象 var o2=angular.copy(o1); console.log(o2); }]); ~~~ ## angular.equals 比较两个对象或者数组或者值,使用的是===方案 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$scope', function ($scope) { //主要是NaN,在JavaScript中NaN是不相等的,但是angular中相等 //false console.log(NaN===NaN); //true console.log(angular.equals(NaN,NaN)); //false console.log(angular.equals(1,'1')); var o1={name:'hzj'}; var o2={name:'hzj'}; //在JavaScript中两个对象绝对不相等 //false console.log(o1===o2); //Angular中相等 //true console.log(angular.equals(o1,o2)); var a1=[1,2]; var a2=[1,2]; //在JavaScript中两个数组也不会相等 //false console.log(a1===a2); //在Angular中两个数组相等 console.log(angular.equals(a1,a2)); }]); ~~~ ## angular.bind 函数绑定,奇怪的东西 格式 ~~~ angular.bind(self, fn, args); ~~~ ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$document', '$scope', function ($document, $scope) { //对象 var stu = {name: 'hzj', sex: 'm'}; //函数 var fn = function (a) { //函数依赖stu对象 //函数有参数a console.log(this.name + ":" + a); }; //利用angular.bind方法,把函数依赖对象,函数句柄,以及函数参数绑定在一起 //并返回行的函数 var fn2=angular.bind(stu,fn,'100'); //执行新的函数 //结果为hzj:100 fn2(); }]); ~~~ ## angular.toJson 序列化JSON ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$document','$scope', function ($document,$scope) { var a1={name:'hzj',sex:'m'}; var xx= angular.toJson(a1); //结果为{"name":"hzj","sex":"m"} console.log(xx); }]); ~~~ ## angular.fromJson 反序列化JSON ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$document','$scope', function ($document,$scope) { var json={"name":"hzj","sex":"m"}; var xx= angular.fromJson(json); //结果为{name:'hzj',sex:'m'} console.log(xx); }]); ~~~ ## angular.bootstrap 启动多个ng-app的方法,高级部分出现【这里的bootstrap与bootstrap框架不是一回事】 ## angular.injector 创建依赖注入的方法,高级部分出现 ## angular.element 把dom变成jquery对象,可以使用Angular提供的jqlite的一些方法,但是不推荐这样做 ### 案例 ~~~ //创建控制器 angular.module('myapp').controller('my_c', ['$document','$scope', function ($document,$scope) { angular.element($document.getElementById('p1')).text('xxx'); }]); ~~~ ## angular.module angular模块创建方法,也是第三方组件依赖的地方,也是调用模块的方法 ### 案例 ~~~ //创建模块 angular.module('myapp',[]); //创建模块,并且依赖其他模块 angular.module('myapp',['ionic']); //调用模块 angular.module('myapp'); ~~~