1 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
$location
服務(wù)是對(duì)所有瀏覽器中都存在的window.location
對(duì)象的封裝。那么,為什么需要使用$location
服務(wù),而不是直接使用window.location
呢?
告別全局變量
關(guān)于全局變量,window.location是一個(gè)很好的例子(實(shí)際上,瀏覽器中的window和document兩個(gè)對(duì)象也是很好的例子)。如果你的應(yīng)用中存在全局變量,那么對(duì)它的測(cè)試、維護(hù)以及使用都會(huì)很麻煩(即使目前沒(méi)有造成麻煩,但是長(zhǎng)遠(yuǎn)來(lái)看必然會(huì))。$location服務(wù)將會(huì)屏蔽這種污染(我們一般把全局變量稱(chēng)為全局空間污染);同時(shí),當(dāng)你進(jìn)行單元測(cè)試的時(shí)候,可以利用$location服務(wù)注入假數(shù)據(jù),從而可以測(cè)試瀏覽器的location細(xì)節(jié)
API
如果使用$location
,那么就可以按照任何你喜歡的方式來(lái)使用。而如果使用window.location
,當(dāng)其中的內(nèi)容發(fā)生變化時(shí),你需要自已通知AngularJS
,并且需要負(fù)責(zé)監(jiān)聽(tīng)。
HTML5集成
$location
服務(wù)非常智能,它能夠感受到瀏覽器是否可以使用HTML5
API。如果可以,它會(huì)自動(dòng)使用這些API;如果不可以,它會(huì)回退并使用默認(rèn)的處理方式。
添加回答
舉報(bào)