1.新建debounce.js,代码如下

function debounce($timeout, $q) {return function debounce(func, wait, immediate){var timeoutvar deferred = $q.defer();return function () {var content = this;var args = arguments;var later = function () {timeout = nullif(!immediate){deferred.resolve(func.apply(content, args))deferred = $q.defer();}}var callNow = immediate && !timeout;if(timeout){$timeout.cancel(timeout)}timeout = $timeout(later, wait)if(callNow){deferred.resolve(func.apply(content, args))deferred = $q.defer()}return deferred.promise}}
}
export  default  debounce()

2.app.js注入服务如下(import debounce from './static/scripts/factory/debounce.js' 和 .factory('debounce',['$timeout','$q',debounce])

import angular from 'angular'
import 'oclazyload'
import uirouter from 'angular-ui-router'
import uiBootstrap from 'angular-ui-bootstrap'
import debounce from './static/scripts/factory/debounce.js'
import headerDev from './static/scripts/diredctive/headerDev.js'
import slidemenuDev from './static/scripts/diredctive/slidemenuDev.js'
import routing from './router.js' //路由
import indexCtrl from  './static/components/index/indexCtrl.js' //主页
import netWork from  './static/components/index/netWork.js' //网络
import commonService from  './static/service/commonService.js' //网络
window.app = angular.module('myProject',['uirouter','uiBootstrap','oclazyload']).config(routing).run(['$rootScope',function($rootScope){$rootScope.$on('$stateChangeSuccess',function(event,toState){$rootScope.$broadcast('to-menu', {state: toState.name})})}]).service('commonService',commonService).directive('headerDev',headerDev).directive('slidemenuDev',slidemenuDev).controller('indexCtrl',indexCtrl).controller('netWork',netWork).factory('debounce',['$timeout','$q',debounce])
export default app

3.防抖的controller使用$inject注入依赖

myCtr.$inject = ['$scope','debounce'].

4.直接使用debounce例如

html 内容如下

<input type="text" name="activities" ng-model="inputValue" ng-change="changeValue"></input>

js内容如下:

function myCtr($scope,debounce){$scope.changeValue = debounce(function(){this.currentValue = inputValue;},500)
}

angularjs防抖相关推荐

  1. Android 功能防抖 的实现

    功能防抖:  在规定时间内多次触发某一个功能 ,仅会响应第一次触发操作 我们可以设置时间显示,也可以使用RxJava 的 throttleFirst 来实现效果 普通的判断写法可以看我的这一遍博客 使 ...

  2. AngularJS和DataModel

    通常,在AngularJS中使用JSON作为存储数据的模型.我们可能这样在controller中写model: app.controller('BookController',['$scope',fu ...

  3. AngularJS 杂项知识点

    1.要用ngChange要同时使用ngModel,下拉选择获取当前选中值. 2.打包代替动态加载(js文件) requirejs真正的价值在于模块化,不是动态加载,angularjs本身有模块化机制, ...

  4. angularjs post 跨域

    web api搞好了:用Ajax妥妥的:但是前端用的AngulagJS,也懒得再换为Ajax了: 但是问题来了:提示: 已拦截跨源请求:同源策略禁止读取位于 http://x.x.x.x:port/a ...

  5. AngularJS 指令

    1. AngularJS指令的特点: AngularJS通过被称为指令的新属性来扩展HTML,指令的前缀为ng-. AngularJS通过内置的指令来为应用添加功能. AngularJS允许你自定义指 ...

  6. AngularJS中的按需加载ocLazyLoad

    欢迎大家讨论与指导 : ) 初学者,有不足的地方希望各位指出 一.前言 ocLoayLoad是AngularJS的模块按需加载器.一般在小型项目里,首次加载页面就下载好所有的资源没有什么大问题.但是当 ...

  7. 【12】AngularJS 事件

    AngularJS 事件 AngularJS 有自己的 HTML 事件指令. ng-click 指令 ng-click 指令定义了 AngularJS 点击事件. <div ng-app=&qu ...

  8. 防抖 节流_关于防抖和节流

    虾扯蛋之函数防抖和节流 - 掘金 先贴贴 这个哥们的. 因为我看了很多,感觉大多都是复制.没有啥思考 在介绍以下这些问题的时候.先公示下我思考的时候出现的问题 1.如果你使用 onclick 和 ad ...

  9. Angular的ChangeDetectorRef.detectChanges()实现angularJS的$apply()方法,强制刷新数据渲染

    在Javascript代码里,都是按照一定顺序来执行的,当轮到一个代码片段执行的时候,浏览器就只会去执行当前的片段,不会做任何其他的事情.所以有时候一些做得不是很好的网页,当点击了某个东西之后会卡住, ...

  10. AngularJS学习笔记(3)——通过Ajax获取JSON数据

    通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app=&quo ...

最新文章

  1. 想看Vue文档,cn放错位置,误入xx网站...
  2. jedate-开始使用一款好用的时间插件
  3. 【Python项目实战】提取.docx文件中的图片并保存到指定的文件夹
  4. 解决ubuntu中vi不能正常使用方向键与退格键的问题
  5. 关于zencart的magic zoom
  6. Android Studio:64K问题com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
  7. go实现数组切片洗牌函数Shuffle
  8. 在 Libra 刷屏的背后,你必须知道 TA!
  9. 不想开滴滴、送外卖的产品经理,听我一声劝……
  10. 常用oracle语句
  11. Rational RequisitePro
  12. zabbix 创建触发器
  13. [云原生专题-3]:云平台 - 云计算平台快速入门
  14. ElasticSearch中 如何使用“group by“ 进行日 周 月 年统计呢?(ElasticsearchTemplate进行聚合查询)
  15. 高阶函数:如何使用过滤器,映射和约简以获得更可维护的代码
  16. 《云计算架构技术与实践》连载(2):1.2 云计算的发展趋势
  17. windows下编译chromium浏览器的方法
  18. JDBC四个核心对象及其常用方法
  19. WEB端和手机端-三种提示框架
  20. oracle提示ORA-00979: 不是 GROUP BY 表达式

热门文章

  1. bios属于计算机软件系统吗,装系统必须知道的BIOS,到底是什么?
  2. 谷歌十大高薪职位:首席软件工程师居首
  3. Paper Notes: Cross-Domain Image Translation Based on GAN
  4. 2021年美容师(中级)考试技巧及美容师(中级)试题及解析
  5. 大衣哥家的小伟和亚楠还能走多久?
  6. 如何用代码实现发送qq邮件(详细代码)
  7. srb (bug篇)
  8. 可汗学院公开课——统计学学习:62-81
  9. 2021 Domain Adaptation(李宏毅
  10. 平面曲线的弧长和曲率