AngularJS API Docs - Global APIs

此文章的 API 参考 Version 1.4.7.

angular.forEach: 迭代函数

  • 用法: angular.forEach(obj, iterator, [context])

  • 解释: obj 为迭代对象, 可以是一个 object, 也可以是 array, 根据 obj 的类型, 迭代函数iterator的参数理解稍微不同(详见示例), contenxt 可选参数, 是iterator
    执行的上下文.

  • 注意:

    • angular.forEach不迭代继承的属性, 因为内部使用了hasOwnProperty方法来过滤

    • Array.prototype.forEach不同, 当 obj 为不可迭代对象时, 比如 undefined, null, number, angular.forEach返回 obj 本身, iterator并不会执行

  • 示例:

var person = {name: "Jerry", gender: "male"};
var result = [];
angular.forEach(person, function (value, key, obj) {
    this.push(key + ": " + value);
}, result);
$log.debug(result); // ["name: Jerry", "gender: male"]

var friends = ["Tom", "Jerry", "Donald"];
angular.forEach(friends, function (value, index, arr) {
    this.push(index + ": " + value);
}, result);
$log.debug(result); // ["name: Jerry", "gender: male", "0: Tom", "1: Jerry", "2: Donald"]

$log.debug(angular.forEach(undefined)); // undefined
$log.debug(angular.forEach(null)); // null
$log.debug(angular.forEach(1, function (){ $log.debug("in iterator")})); // 1

angular.extend

  • 功能: 扩展函数, 将src(s)的可枚举属性复制到dst中;

  • 用法: angular.extend(dst, src...);

  • 注意

    • 如果不想保留原有的 obj 不被改变, 可以使用{}作为第一个参数: var obj = angular.extend({}, obj1, obj2)

    • angular.extend不支持递归merge(deep copy), 如果需要需要使用angular.merge

  • 示例

var obj1 = {name: "Jerry"};
var obj2 = {gender: "male"};
var obj3 = {phone: "13312345678"};
angular.extend(obj1, obj2, obj3);

$log.debug(obj1); // {gender: "male", name: "Jerry", phone:"13312345678"}

angular.merge

  • 功能: 扩展函数, 深度拷贝

  • 用法: angular.extend(dst, src...);angular.extend使用方法一致

  • 注意: 在1.3.0版本中无此功能

angular.noop

  • 功能: 啥都不干的函数

  • 用法:

function foo(callback) {
  var result = calculateResult();
  (callback || angular.noop)(result);
}

angular.identity

  • 功能: 返回第一个参数

  • 用法:

function transformer(transformationFn, value) {
  return (transformationFn || angular.identity)(value);
};

angular.copy

  • 用法: angular.copy(source, [dest])

  • 详解: !!此 API 的实践效果与官方的有效出入.

    • 首先清空 dest(如果dest是一个object, array, 否则不修改),

    • 然后生成 source 的一个深拷贝, 并将深拷贝复制到 dest 中(如果 dest 是一个object, array且 source 与 dest 数据结构相同, 否则 dest 不做修改)

    • 返回 dest

  • 注意

    • 如果没有destination参数, 那么source的深拷贝将被创建, 且返回

    • 如果 source 和 destination 相同, 那么抛出一个错误

angular.equals(o1, o2)

  • 功能: 比较o1, o2是否相等, 包括: obj, arr, primitives, regExp,

  • 详解:

    • 满足以下条件 angular.equals 返回 true

    • 满足 ===

    • obj 属性或者 array 的元素递归满足 angular.equals == true

    • angular.equals(NaN, NaN) === true

    • 字面量相等的 regExp 相等

    • 带 $ 的属性和 function 将会被忽略, 但是只比较两个匿名函数会返回 false

    • scope, DOM 只能按照 === 去判断

angular.bind(self, fn, args)

var greet = function (greeting, punctuation) {
  return greeting + ' ' + this.user + punctuation;
};
var object = { 'user': 'fred' };
var bound = angular.bind(greet, object, 'hi');
bound('!'); // → 'hi fred!'

angular.toJson

  • 用法: angular.toJson(obj, [pretty])

  • 功能: 将 obj 按照 json 的格式输出

  • 解释: 如果 pretty 设置, pretty=true <=> pretty=2, 即缩进的空格个数

angular.bootstrap

  • 功能: 手动启动一个 angular 的应用, 此乃高级内容, 暂做简要记录, 还须深入理解

  • 用法: angular.bootstrap(element, [modules], [config])

  • 示例:

 <!doctype html>
<html>
<body>
<div ng-controller="WelcomeController">
    {{greeting}}
</div>

<script src="angular.js"></script>
<script>
    var app = angular.module('demo', [])
            .controller('WelcomeController', function ($scope) {
                $scope.greeting = 'Welcome!';
            });

    setInterval(function () {
        angular.bootstrap(document, ['demo']);
    }, 2000);
</script>
</body>
</html>    

angular.element: 包裹 DOM 元素作为一个 jQuery(jqLite) 的元素

  • 详解: angular 中的 element 都是 jQuery(jqLite)元素; jqLite 的使用将会在另外的文章中给出介绍

angular.module

  • 用法: angular.module(name, [requires], [configFn])

  • 功能: 用来创建, 注册, 获得 angular 的 module

  • 注意:

    • 传入一个参数为获取, 传入多个参数为创建

其他

  • angular.lowercase: 字符串转小写

  • angular.uppercase: 字符串转大写

  • angular.isUndefined

  • angular.isDefined

  • angular.isObject

    • 功能: 判断参数是否是一个 object 但是不是 null, 注意 array 是 object

  • angular.isString

  • angular.isNumber

  • angular.isDate

  • angular.isArray

  • angular.isFunction

  • angular.isElement

    • 功能: 判断参数是否是一个 DOM 元素或者一个 jQuery 包裹的元素

  • angular.reloadWithDebugInfo: 重启应用, 打开 debug

  • angular.injector, 高级内容, 未来深入理解

  • angular.fromJson


xiaoyu2er
661 声望35 粉丝

在前端的道路上一路狂奔


引用和评论

0 条评论