国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

angularjs之$timeout指令詳解

2024-05-06 15:15:58
字體:
來源:轉載
供稿:網友

angular.js的$timeout指令對window.setTimeout做了一個封裝,它的返回值是一個promise對象.當定義的時間到了以后,這個promise對象就會被resolve,回調函數就會被執行.

如果需要取消一個timeout,調用$timeout.cancel(promise)方法.

用法:

$timeout(fn, [delay], [invokeApply]);

fn: 回調函數(必填)

delay: number類型.延遲的時間(非必填),如果不填,表示等線程空下來以后就執行.比如當頁面被渲染完成后.

invokeApply: 布爾值.是否需要進行臟值檢測(非必填),不填默認為false,如果設置為true,則fn回調會被包在$scope.$apply()中執行

返回值: 返回一個promise對象.當定義的時間到了以后,這個promise對象就會被resolve.resolve的值就是fn回調函數的返回值

方法:

$timeout.cancel([promise])

promise: 一個由$timeout()所創建的promise對象.(非必填).調用cancel()以后,這個promise對象就會被reject.

返回值: 如果$timeout()的回調還沒有被執行,那就取消成功.返回true

下面來簡單的測試一下:

   var timeoutApp = angular.module('timeoutApp',[]);   timeoutApp.run(function($timeout){     var a = $timeout(function(){       console.log('執行$timeout回調');       return 'angular'     },1000);     a.then(function(data){       console.log(data)     },function(data){       console.log(data)     });     //$timeout.cancel(a);   })

運行以后看到控制臺打印:

執行$timeout回調
angular

如果我打開注釋,執行.cancel()方法,那么$timeout的回調就不會被執行,它返回的promise被reject,控制臺打印:

canceled

下面做個很實用的小demo: 延遲下拉菜單: 鼠標放到button上的時候,延遲500毫秒顯示下拉菜單,當鼠標離開button的時候,延遲500毫秒隱藏下拉菜單,如果鼠標是進入了下拉菜單部分,那么就不隱藏下拉菜單.如果鼠標離開了下拉菜單,延遲500毫秒隱藏下拉菜單,如果鼠標是進入了button,那么還是不隱藏下拉菜單

html:

<!DOCTYPE html><html ng-app="timeoutApp"><head>  <title>$timeout服務</title>  <meta charset="utf-8">  <link rel="stylesheet" href="../bootstrap.css" rel="external nofollow" />  <script src="../angular.js"></script>  <script src="script.js"></script>  <style type="text/css">  * {   font-family:'MICROSOFT YAHEI'  }  </style></head><body > <div ng-controller="myCtrl">   <div class="dropdown" dropdown >     <button class="btn btn-default dropdown-toggle" type="button" ng-mouseenter = "showMenu()" ng-mouseleave = "hideMenu()">       Dropdown       <span class="caret"></span>     </button>     <ul class="dropdown-menu" ng-show="ifShowMenu" ng-mouseenter = "showMenu()" ng-mouseleave = "hideMenu()">       <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Action</a></li>       <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Another action</a></li>       <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Something else here</a></li>       <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Separated link</a></li>     </ul>   </div> </div></body></html>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 紫金县| 满洲里市| 什邡市| 敦煌市| 安国市| 黎平县| 洛隆县| 栾川县| 九寨沟县| 黄山市| 乐至县| 彭水| 昆山市| 麟游县| 称多县| 苍梧县| 武夷山市| 丹巴县| 专栏| 九寨沟县| 大安市| 岳池县| 河北省| 邵阳市| 昌平区| 乐业县| 兴隆县| 尼勒克县| 格尔木市| 永福县| 安丘市| 闽侯县| 温州市| 林州市| 泗阳县| 报价| 阿拉善右旗| 新蔡县| 专栏| 安宁市| 万源市|