angularJs 一些API

angular.bind

返回一个调用self的函数fn(self代表fn里的this).可以给fn提供参数args(*).这个功能也被称为局部操作,以区别功能。

格式:angular.bind(self,fn,args);

self:object  对象; fn的上下文对象,在fn中可以用this调用

fn:function; 绑定的方法

args:传入fn的参数

使用代码: 

var obj = { name: "Any" };
var fn = function (Adj) {
      console.log(this.name + "is a boy!!! And he is " + Adj + " !!!");
   };
var f = angular.bind(obj, fn, "handsome");
f();//Any is a boy!!! And he is handsome!!!
var t = angular.bind(obj, fn);
t("ugly");// Any is a boy!!! And he is ugly!!!

bind顾名思义绑定的意思,那么假如我们要把A绑到B上,那么必须又有绑定的东西和被绑定的东西。这里需要的就一个对象和一个函数。那么怎么绑?本兽的理解是把对象“绑”到函数的this上去执行,这时候fn的this就等于obj了,至于第三个参数,可有可无,看需求,如果函数需要传入参数,那么我们可以把angular.bind的第三个参数放上去,这就是传入fn函数的参数了。

案例中第一种写法是定义绑定的时候就把fn所需的参数传进去了,调用的时候直接用,而案例中第二种写法是先绑定,在调用执行的时候再给fn传参,效果是一样的...


angular.copy

描述:

复制一个对象或者一个数组(好吧,万物皆对象,数组也是一个对象)。
如果省略了destination,一个新的对象或数组将会被创建出来;
如果提供了destination,则source对象中的所有元素和属性都会被复制到destination中;
如果source不是对象或数组(例如是null或undefined), 则返回source;
如果source和destination类型不一致,则会抛出异常。
注意:这个是单纯复制覆盖,不是类似继承

使用方法:

angular.copy(source, [destination]);

source *   任何类型 也可以是null或者undefined

destination object||array copy去的目的地. 可以省略, 如果不省略, 其必须和source是同类

angular.equals


描述:

比较两个值或者两个对象是不是相等。还支持值的类型,正则表达式和数组的比较。两个值或对象被认为是相等的前提条件是以下的情况至少能满足一项:

  • 两个值或者对象能通过=== (恒等) 的比较
  • 两个值或者对象是同样类型,并且他们的属性都能通过angular.equals的比较
  • 两个值都是NaN
  • 两个值代表两个同样的正则表达式,例如angular.equals('/abc/', '/abc/')
在属性的比较中,以$开头的属性或函数将被忽略,不做比较。 Scope和DOM对象的比较都是通过===(恒等)来鉴别的。

使用方法:

angular.equals(o1, o2)  

angular.forEach


描述:

循环对obj对象的每个元素调用iterator, obj对象可以是一个Object或一个Array. Iterator函数调用方法: iterator(value, key), 其中obj是被迭代对象,key是obj的property key或者是数组的index,value就是相应的值.context


使用方法:

angular.forEach(obj, iterator, [context])


参数:

参数名称 参数类型 描述
obj Object||array 被迭代的对象
iterator function 迭代函数
context (optional) Object Object to become context (this) for the iterator function.

返回值:

对obj的引用

var values = {name: 'misko', gender: 'male'};
var log = [];
angular.forEach(values, function(value, key) {
  this.push(key + ': ' + value);
}, log);
$scope.dd = log.join(",");


angular.fromJson


描述:

把Json字符串转为对象


使用方法:

angular.fromJson(json);


参数:

参数名称 参数类型 描述
json string JSON 字符串

返回值:

对象, 数组, 字符串 或者是一个数字

  1. <!DOCTYPE html>  
  2. <html ng-app="App">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title></title>  
  6.   
  7.     <script src="../js/angular.js"></script>  
  8.     <script type="text/javascript">  
  9.         angular.module("App", [])  
  10.                 .controller("parseController", function($scope)  
  11.                 {  
  12.                     $scope.parse = function()  
  13.                     {  
  14.                         var json = '{"name":"liSi", "password":"321"}';  
  15.                         var jsonArr = '[{"name":"zhangSan", "password":"123"},{"name":"liSi", "password":"321"}]';  
  16.   
  17.                         var obj = angular.fromJson(json);  
  18.                         console.log(obj.name);  
  19.   
  20.                         var objArr = angular.fromJson(jsonArr);  
  21.                         console.log(objArr[0].name);  
  22.                         console.log(objArr[1].password);  
  23.                     }  
  24.   
  25.   
  26.                 });  
  27.     </script>  
  28. </head>  
  29. <body>  
  30.   
  31. <div ng-controller="parseController">  
  32.   
  33.     <button ng-click="parse()">点击我!</button>  
  34.   
  35. </div>  
  36. </body>  
  37. </html> 
相应地,能够从Json到对象,就能够从对象到Json:
  1. var obj =  
  2. {  
  3.    name:"liSi", password:"321"  
  4. }  
  5.   
  6.    var str = angular.toJson(obj, true);  
  7.    console.log(str);


angular.identity

函数返回本身的第一个参数。这个函数一般用于函数风格。

格式:angular.identity()   

使用代码:

  (function () {
    angular.module("Demo", [])
    .controller("testCtrl", testCtrl);
    function testCtrl() {
         var getResult = function (fn, val) {
          return (fn || angular.identity)(val);
      };
      var result = getResult(function (n) { return n * 2; }, 3); //  result = 6
      var null_result = getResult(null, 3);//  null_result = 3
      var undefined_result = getResult(undefined, 3);// undefined _result = 3
    };
  }())

angular.noop

一个不执行任何操作的空函数。这个函数一般用于函数风格。

格式:angular.noop();

贴代码:

  (function () {
    angular.module("Demo", [])
    .controller("testCtrl", testCtrl);
    function testCtrl() {
      var _console = function (v) {
          return v * 2;
      };
      var getResult = function (fn, val) {
          return (fn || angular.noop)(val);
      };
      var firstResult = getResult(_console, 3);//6
      var secondResult = getResult(null, 3);//undefined
      var thirdResult = getResult(undefined, 3);// undefined
    };
  }())
总的来说呢,这两个方法都是用来写函数的时候用的,根据上面写的demo的代码及运行结果来看,感觉他们的作用是用来防止函数传入的是null或者undefined或者其他不能操作的对象。因为如果去掉这两个后,你在函数调用的时候传入null/undefined/或者其他不能执行的对象,那么控制台是直接报错的..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值