成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

AngularJS的核心對(duì)象angular上的方法全面解析(AngularJS全局API)

pubdreamcc / 997人閱讀

摘要:總結(jié)一下的核心對(duì)象上的方法,也幫助自己學(xué)習(xí)一下平時(shí)工作中沒(méi)怎么用到的方法,看能不能提高開(kāi)發(fā)效率。我當(dāng)前使用的版本是也是目前最新的穩(wěn)定版本,不過(guò)在全局上,版本不同也沒(méi)什么區(qū)別。在引入了的情況下,使用方法和幾乎一樣,相當(dāng)于一個(gè)語(yǔ)法糖。

總結(jié)一下AngularJS的核心對(duì)象angular上的方法,也幫助自己學(xué)習(xí)一下平時(shí)工作中沒(méi)怎么用到的方法,看能不能提高開(kāi)發(fā)效率。我當(dāng)前使用的Angularjs版本是1.5.5也是目前最新的穩(wěn)定版本,不過(guò)在全局API上,版本不同也沒(méi)什么區(qū)別。

AngularJS 全局 API列表

element

bootstrap

copy

extend

merge

equals

forEach

noop

bind

toJson

fromJson

identity

isUndefined

isDefined

isString

isFunction

isObject

isNumber

isElement

isArray

version

isDate

lowercase

uppercase

module

angular.forEach

forEach(obj, iterator)
遍歷obj(可以是對(duì)象,也可以是數(shù)組)對(duì)象,并依次調(diào)用iterator(value, key, obj)函數(shù)。
其中iterator函數(shù),接收的三個(gè)參數(shù)分別為

value: 對(duì)象的屬性(數(shù)組元素)

key: 對(duì)象的屬性名(數(shù)組的索引)

obj: 數(shù)組(對(duì)象)本身

例子:

var list = ["小明", "小毛", "小周", "小蕾"];
angular.forEach(list, function (val, key) {
    console.log(key + "號(hào)同學(xué):" + val);
})

var obj = {
    name: "吳登廣",
    age: "21",
    title: "worker"
}

angular.forEach(obj, function (val, key) {
    console.log(key + ":" + val);
})

效果:

angular.module

這個(gè)方法大家應(yīng)該都很熟悉了
module(name, requires),name為模塊名,requires(可選)為依賴的模塊,當(dāng)有依賴的模塊數(shù)組的時(shí)候,表示注冊(cè)一個(gè)模塊,沒(méi)有時(shí)為引用一個(gè)模塊。
例子:

angular.module("main", []);

console.log(angular.module("main"));

效果:

angular.element

這個(gè)方法是用來(lái)操作DOM的,一般在指令里面使用。
在引入了jquery的情況下,使用方法和jquery幾乎一樣,相當(dāng)于一個(gè)語(yǔ)法糖。

var ele = angular.element("h1");
console.log(ele.html());

在沒(méi)有引入jquery的情況下,使用的其實(shí)是jqLite(angular自己封裝的類似于jquery的一個(gè)東西),使用方法也類似,只不過(guò)不支持一些jquery的選擇器。

var ele = angular.element(document.getElementsByTagName("h1")[0]);
console.log(ele.html());

至于用jqLite獲取到的封裝過(guò)后的DOM節(jié)點(diǎn)和jquery的有點(diǎn)不太一樣,這里可以參考一篇文章。

angular.bootstrap

這個(gè)函數(shù)不太常用。如果你不想使用ng-app指令來(lái)啟動(dòng)angular應(yīng)用的話,可以用angular.bootstrap()來(lái)啟動(dòng)

angular.element(document).ready(function() {
    angular.bootstrap(document, []);
});

需要依賴的模塊數(shù)組做為參數(shù)。

angular.toJson

其實(shí)就是調(diào)用JSON.stringify()方法將一個(gè)對(duì)象或數(shù)組,格式化為JSON字符串。

angular.fromJSON

就是調(diào)用JSON.parse()方法將一個(gè)JSON字符串轉(zhuǎn)換為一個(gè)對(duì)象
例子:

var user = {
    name: "Jax2000",
    age: 21,
    title: "worker"
}
user = angular.toJson(user)
console.log(user);
user = angular.fromJson(user);
console.log(user);

效果:

angular.copy

copy(source, destination)
深復(fù)制一個(gè)對(duì)象或者數(shù)組,這是一個(gè)非常實(shí)用的方法,熟悉js的人都應(yīng)該知道,js中 = 操作符,實(shí)際上復(fù)制的是指針,所以前后兩個(gè)變量指向的還是內(nèi)存中的同一個(gè)對(duì)象,所以我們?cè)谄渲幸粋€(gè)變量上操作該對(duì)象時(shí),對(duì)另外一個(gè)變量也會(huì)生效,有時(shí)候我們并不希望出現(xiàn)這種情況。然后angular.copy方法就是深復(fù)制,會(huì)在內(nèi)存中再生成一個(gè)對(duì)象,兩個(gè)變量就可以獨(dú)立,相互不產(chǎn)生影響。
接收一個(gè)必須參數(shù)source,和一個(gè)可選參數(shù)destination

var user1 = {
    name: "wudengguang",
    age: 21,
    title: "worker"
}
var user2 = user1;
var user3 = angular.copy(user1);
var user4 = {};

// 注意這個(gè)user4必須是一個(gè)對(duì)象或者數(shù)組
angular.copy(user1, user4);
user1.name = "liulei";
console.log("user1:" + user1.name);
console.log("user2:" + user2.name);
console.log("user3:" + user3.name);
console.log("user4:" + user4.name);

效果:

可以看到改變user1的name字段之后,淺復(fù)制的user2受到了影響,而深復(fù)制的user3和user4沒(méi)有受到影響

angular.extend

extend(destination, src1, src2...)
這個(gè)方法是用來(lái)擴(kuò)展對(duì)象的,destination為要擴(kuò)展的對(duì)象,會(huì)將后面的對(duì)象的屬性全部復(fù)制到destination中,不過(guò)是淺復(fù)制

var user1 = {
    name: "Jax2000",
    age: 21,
}

var user2 = {
    age: 22,
    skill: {}
}

var dst = {};

angular.extend(dst, user1, user2);

console.log(dst);

console.log(dst.skill === user2.skill);

angular. merge

這個(gè)方法和extend方法是一樣的,也是用來(lái)擴(kuò)展目標(biāo)對(duì)象的,不過(guò)用的是深復(fù)制

var user1 = {
    name: "Jax2000",
    age: 21,
}

var user2 = {
    age: 22,
    skill: {}
}

var dst = {};

angular.merge(dst, user1, user2);

console.log(dst);

console.log(dst.skill === user2.skill);

merge和extend常用于獲取存儲(chǔ)在服務(wù)端的用戶設(shè)置,然后需要和本地的結(jié)合的這一類案例。如果對(duì)于copy,extend,merge的區(qū)別還不是很了解的話,可以看這篇文章。

angular.equals

equals(o1, o2)
見(jiàn)文知意,判斷兩個(gè)對(duì)象或者值是否相等,其中對(duì)象只要是屬性都想同即可。

var user1 = {
    name: "Jax2000",
    age: 21,
}

var user2 = {
    age: 21,
    name: "Jax2000"
}

console.log(angular.equals(user1, user2));

結(jié)果是true

angular.noop

這個(gè)方法直接看源代碼就知道了

function noop() {}

我也不是很清楚,這個(gè)東西干嘛的,可能是有些函數(shù)需要回調(diào)函數(shù)做為參數(shù),在沒(méi)有時(shí)調(diào)用的吧,官方的文檔案例:

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

這個(gè)方法就是返回一個(gè)有特定作用域的函數(shù)對(duì)象
angular.bind(self, fn, args)
self: 函數(shù)的作用域
fn: 需要改變作用域的函數(shù)
args: 需要傳遞給該函數(shù)的參數(shù)數(shù)組

var user1 = {
    name: "Jax",
    age: 21,
}

var user2 = {
    age: 21,
    name: "Scarlett"
}

function sayName(user) {
    console.log(this.name, user.name);
}

 var _sayName = angular.bind(user1, sayName, user2);

_sayName();

效果就是打印出了 Jax Scarlett

angular.identity

該函數(shù)也很簡(jiǎn)單,就是返回這個(gè)函數(shù)接收到的第一個(gè)參數(shù)
例子也用官方的例子好了

function getResult(fn, input) {
    return (fn || angular.identity)(input);
};

getResult(function(n) { return n * 2; }, 21);   // returns 42
getResult(null, 21);                            // returns 21
getResult(undefined, 21);                       // returns 21
angular.isUndefined

判斷傳入的參數(shù)是否為undefined

console.log(angular.isUndefined(undefined)); // true
console.log(angular.isUndefined(null)); // false
angular.isDefined

判斷傳入進(jìn)來(lái)的參數(shù)是否不是undefined

console.log(angular.isDefined(undefined)); // false
console.log(angular.isDefined(null)); // true
angular.isString

判斷傳入進(jìn)來(lái)的參數(shù)是否為字符串

console.log(angular.isString("123")); // true
console.log(angular.isString(123)); // false
angular.isNumber

判斷傳進(jìn)來(lái)的參數(shù)是否為number類型

console.log(angular.isNumber("123")); // false
console.log(angular.isNumber(123)); // true
angular.isFunction

判斷傳遞進(jìn)來(lái)的參數(shù)是否為一個(gè)函數(shù)

console.log(angular.isFunction(fn)); // true
console.log(angular.isFunction(fn())); // false
angular.isObject

判斷傳遞進(jìn)來(lái)的參數(shù)是否為對(duì)象(null 除外)

console.log(angular.isObject({})); // true
console.log(angular.isObject(null)); // false
console.log(angular.isObject(123)); // false
angular.isArray

就是Array.isArray
判斷傳入進(jìn)來(lái)的參數(shù)是否為數(shù)組

console.log(angular.isArray([])); // true
console.log(angular.isArray(null)); // false
angular.isElement

判斷傳遞進(jìn)來(lái)的參數(shù)是否為一個(gè)DOM節(jié)點(diǎn)(被jquery擴(kuò)展過(guò)的也可)

var body = angular.element(document.getElementsByTagName("body")[0]);

console.log(angular.isElement(body)); // true
angular.isDate

判斷傳遞進(jìn)來(lái)的對(duì)象是否為Date類型

console.log(angular.isDate(new Date())); // true
angular.lowercase

將一個(gè)字符串轉(zhuǎn)換為小寫

angular.upercase

將一個(gè)字符串轉(zhuǎn)換為小寫

console.log(angular.lowercase("ABCD")); // abcd
console.log(angular.uppercase("abcd")); // ABCD
angular.version

這是一個(gè)屬性,返回angular的版本

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/49862.html

相關(guān)文章

  • AngularJS核心對(duì)象angular方法全面解析(AngularJS全局API)

    摘要:總結(jié)一下的核心對(duì)象上的方法,也幫助自己學(xué)習(xí)一下平時(shí)工作中沒(méi)怎么用到的方法,看能不能提高開(kāi)發(fā)效率。我當(dāng)前使用的版本是也是目前最新的穩(wěn)定版本,不過(guò)在全局上,版本不同也沒(méi)什么區(qū)別。在引入了的情況下,使用方法和幾乎一樣,相當(dāng)于一個(gè)語(yǔ)法糖。 總結(jié)一下AngularJS的核心對(duì)象angular上的方法,也幫助自己學(xué)習(xí)一下平時(shí)工作中沒(méi)怎么用到的方法,看能不能提高開(kāi)發(fā)效率。我當(dāng)前使用的Angularj...

    RdouTyping 評(píng)論0 收藏0
  • AngularJs 入門(一)--前言

    摘要:入門一前言目前來(lái)說(shuō)相對(duì)于現(xiàn)在流行的高版本以及來(lái)說(shuō)實(shí)屬是老套的前端框架了,當(dāng)然這都不重要,沒(méi)有完美的框架,只有不斷優(yōu)化的代碼。通過(guò)使用我們稱為指令的結(jié)構(gòu),讓瀏覽器能夠識(shí)別新的語(yǔ)法。使用作為輸入,而不是字符串,是區(qū)別于其它的框架的最大原因。 AngularJs 入門(一) 前言 AngularJs目前來(lái)說(shuō)相對(duì)于現(xiàn)在流行的高版本ng2、ng4,以及Vue2.0、React來(lái)說(shuō)實(shí)屬是老套的前...

    wenyiweb 評(píng)論0 收藏0
  • AngularJS簡(jiǎn)述

    流行框架 簡(jiǎn)介 angularjs是一款非常優(yōu)秀的前端高級(jí)JS框架,由谷歌團(tuán)隊(duì)開(kāi)發(fā)維護(hù),能夠快速構(gòu)建單頁(yè)web應(yīng)用,化繁為簡(jiǎn) 無(wú)論是angularjs還是jQuery都是用原生JS封裝的 庫(kù):對(duì)代碼進(jìn)行封裝,調(diào)用封裝的方法,簡(jiǎn)化操作 傳統(tǒng)方式是用get方式獲取元素,然后點(diǎn)方法 jQuery庫(kù)實(shí)現(xiàn)了對(duì)獲取方式的封裝,對(duì)方法的封裝 框架:提供代碼書寫規(guī)則,按照規(guī)則去寫代碼,框架會(huì)幫我們實(shí)現(xiàn)響應(yīng)的功能...

    Jason 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<