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

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

这篇文章给大家介绍了AngularJS中$watch和$timeout的使用例子,通过示例代码相信更能让大家理解,有需要的朋友们下面来一起看看吧。

前言

相信使用过Angular的小伙伴应该对$watch这个监听不陌生,它主要用于监听模型的变化,当你的模型部分发生变化时它会通知你。我在最近的平台管理开发中,也用到这个牛逼哄哄的Angular,在做filter的时候不可以避免的用到$watch监听。当时我的想法就是搜索的时候不需要点击搜索按钮,这样在用户体验上也是极好的,避免了输入后再次点击的操作步骤。

然后,当$watch监听的时候一开始代码是这样的

 $scope.$watch('filterOptions', function (newVal, oldVal) { if (newVal !== oldVal) { //filterOptions发生变化时,调用方法 $scope.getPagedDataAsync('admin/bill/'+$stateParams.page+'?pageCount='+$scope.paginationConf.itemsPerPage,$scope.filterOptions); } }, true);

这样做,看上去没什么大问题,每次输入的时候就拉一次数据。但是!但是!但是!重要的事情说三遍!当用户输入“张三”这个搜索字的时候,代码是这样执行的,“张”字拉了一次数据,“三”字有拉了一次数据。好了嘛,这还是两个字,要是输入十个字呢,服务器就哭了,服务器就来打前端了。

这个时候就需要用到Angular中的这货了――$timeout,他是angular中的一个定时器。针对我们搜索来说,我们在监听filterOptions发生变化时,不要马上请求,给他0.8秒的一个等待的时间,如果这0.8秒内filterOptions没有又一次发生变化,那么就请求拉数据,否则就继续输入。

代码如下:

 $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);

总结

以上就是这篇文章的全部内容,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

以上就是AngularJS中$watch和$timeout的使用示例的详细内容,更多请关注易知道|edz.cc其它相关文章!

推荐阅读

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    AMD平台专业术语

    AMD平台专业术语,,1. AMD VISION技术 AMD公司曾经发布过的一份调查报告显示,消费者推迟购买硬件是由于他们对PC术语感到困惑。因此,AMD公

    玩家体验:建立AMD超频平台的选择

    玩家体验:建立AMD超频平台的选择,,目前,65nm的Athlon 64 X2处理器是非常受欢迎的,这主要是由于处理器的高性价比和优秀的超频能力。也许你会

    H61、Z68平台的性能比较

    H61、Z68平台的性能比较,,预算分配选择DIY游戏玩家在面对问题时每个安装,买一个好的CPU和害怕搭配主板太烂,影响性能发挥,甚至浪费CPUDIY,是很

    APU平台3000元网游配置

    APU平台3000元网游配置,,对于只有QQ、在线电脑用户、高端电脑的过度浪费造成的性能,不符合DIY的精神,所以选择合适的是最好的,编辑是推荐一个

    2000元HP3005mt双核心业务平台

    2000元HP3005mt双核心业务平台,,HP Pro 3005系列,为中小型企业的商用台式机,坚持传统的商务电脑组装的风格。6月24日,惠普3005mt(le032pa)具有

    做模型电脑|电脑上做模型的软件

    做模型电脑|电脑上做模型的软件,,电脑上做模型的软件建模软件 中文名 ;sketchup渲染软件 主要用在建筑方案中:对建筑造型的推敲 现在G