2 回答

TA貢獻1036條經(jīng)驗 獲得超461個贊
angular里的?
setTimeout是原生的,$timeout是ng封裝過的,setTimeout里面改變數(shù)據(jù)不會被ng監(jiān)控到。$timeout可以

TA貢獻152條經(jīng)驗 獲得超59個贊
Angular中$timeout與window.setTimeout的區(qū)別
1. 在$timeout中傳入的函數(shù)會被包含在try...catch中,并且在異常時將異常交給$exceptionHandler
2. window.setTimeout返回的是數(shù)字id,可以通過window.clearTimeout(id)取消,而$timeout返回的是promise對象,要取消要用$timeout.cancel(返回的promise對象)。
3. $timeout傳入的function會更新作用域內(nèi)的數(shù)據(jù)綁定,也就是說在function中對$scope的修改會觸發(fā)更新,而window.setTimeout中對$scope的修改不會觸發(fā)更新。當(dāng)然$timeout有第三個參數(shù),默認(rèn)為true,如果傳入false,則不會更新當(dāng)前作用域的數(shù)據(jù)綁定。
添加回答
舉報