欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

相信使用過Angular的小伙伴應(yīng)該對$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í)器。針對我們搜索來說,我們在監(jiān)聽filterOptions發(fā)生變化時(shí),不要馬上請求,給他0.8秒的一個(gè)等待的時(shí)間,如果這0.8秒內(nèi)filterOptions沒有又一次發(fā)生變化,那么就請求拉數(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)容,希望能對大家的學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

最新評(píng)論