• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >AngularJS > AngularJS中$watch和$timeout的使用示例

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-30

本文主要包含angularjs timeout,angularjs watch,angularjs中 watch,angularjs示例,angularjs等相关知识,希望在学习及工作中可以帮助到您

前言

相信使用过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);
</div>

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

这个时候就需要用到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);
</div>

总结

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

</div>

您可能想查找下面的文章:

  • AngularJS定时器的使用与移除操作方法【interval与timeout】
  • AngularJS中$watch和$timeout的使用示例

相关文章

  • 2017-05-30Angular中使用$watch监听object属性值的变化(详解)
  • 2017-05-30AngularJS入门教程之更多模板详解
  • 2017-05-30AngularJS 中的指令实践开发指南(一)
  • 2017-05-30angularjs的一些优化小技巧
  • 2017-05-30BootStrap+Angularjs+NgDialog实现模式对话框
  • 2017-05-30AngualrJS中的Directive制作一个菜单
  • 2017-05-30AngualrJS中每次$http请求时的一个遮罩层Directive
  • 2017-05-30AngularJS模块学习之Anchor Scroll
  • 2017-05-30AngularJS $injector 依赖注入详解
  • 2017-05-30angular实现form验证实例代码

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • AngularJS Select(选择框)使用详解
    • AngularJS+Node.js实现在线聊天室
    • AngularJS教程之简单应用程序示例
    • AngularJS基础 ng-mouseenter 指令示例代码
    • AngularJS实现网站换肤实例
    • Angular企业级开发——MVC之控制器详解
    • 利用Angular.js限制textarea输入的字数
    • AngularJS的ng-repeat指令与scope继承关系实例详解
    • AngularJS在IE下取数据总是缓存问题的解决方法
    • 详解Angular的双向数据绑定(MV-VM)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有