最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJS中$watch和$timeout的使用示例

 更新時(shí)間:2016年09月20日 11:45:58   投稿:daisy  
這篇文章給大家介紹了AngularJS中$watch和$timeout的使用例子,通過示例代碼相信更能讓大家理解,有需要的朋友們下面來一起看看吧。

前言

相信使用過Angular的小伙伴應(yīng)該對(duì)$watch這個(gè)監(jiān)聽不陌生,它主要用于監(jiān)聽模型的變化,當(dāng)你的模型部分發(fā)生變化時(shí)它會(huì)通知你。我在最近的平臺(tái)管理開發(fā)中,也用到這個(gè)牛逼哄哄的Angular,在做filter的時(shí)候不可以避免的用到$watch監(jiān)聽。當(dāng)時(shí)我的想法就是搜索的時(shí)候不需要點(diǎn)擊搜索按鈕,這樣在用戶體驗(yàn)上也是極好的,避免了輸入后再次點(diǎn)擊的操作步驟。

然后,當(dāng)$watch監(jiān)聽的時(shí)候一開始代碼是這樣的

$scope.$watch('filterOptions', function (newVal, oldVal) {
 if (newVal !== oldVal) {
 //filterOptions發(fā)生變化時(shí),調(diào)用方法
 $scope.getPagedDataAsync('admin/bill/'+$stateParams.page+'?pageCount='+$scope.paginationConf.itemsPerPage,$scope.filterOptions);
 }
}, true);

這樣做,看上去沒什么大問題,每次輸入的時(shí)候就拉一次數(shù)據(jù)。但是!但是!但是!重要的事情說三遍!當(dāng)用戶輸入“張三”這個(gè)搜索字的時(shí)候,代碼是這樣執(zhí)行的,“張”字拉了一次數(shù)據(jù),“三”字有拉了一次數(shù)據(jù)。好了嘛,這還是兩個(gè)字,要是輸入十個(gè)字呢,服務(wù)器就哭了,服務(wù)器就來打前端了。

這個(gè)時(shí)候就需要用到Angular中的這貨了——$timeout,他是angular中的一個(gè)定時(shí)器。針對(duì)我們搜索來說,我們?cè)诒O(jiān)聽filterOptions發(fā)生變化時(shí),不要馬上請(qǐng)求,給他0.8秒的一個(gè)等待的時(shí)間,如果這0.8秒內(nèi)filterOptions沒有又一次發(fā)生變化,那么就請(qǐng)求拉數(shù)據(jù),否則就繼續(xù)輸入。

代碼如下:

$scope.$watch('filterOptions', function (newVal, oldVal) {
 if (newVal !== oldVal) {
  if (timeout) $timeout.cancel(timeout);
  timeout = $timeout(function() {
  $scope.getPagedDataAsync('admin/bill/'+$stateParams.page+'?pageCount='+$scope.paginationConf.itemsPerPage,$scope.filterOptions);
  }, 800);
 }
 }, true);

總結(jié)

以上就是這篇文章的全部內(nèi)容,希望能對(duì)大家的學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

最新評(píng)論

夏津县| 沾益县| 玉溪市| 岳阳市| 苏州市| 赤城县| 青州市| 托克逊县| 凤翔县| 淳化县| 慈溪市| 合江县| 兴海县| 新平| 六安市| 延边| 重庆市| 巴马| 萝北县| 星子县| 四平市| 班戈县| 射阳县| 南川市| 潼南县| 高阳县| 沁源县| 庄河市| 乌苏市| 乐山市| 通化市| 甘谷县| 珠海市| 四平市| 日喀则市| 奈曼旗| 乡城县| 郑州市| 项城市| 嘉义县| 霸州市|