OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

AngularJS和$scope.$apply()用法的最佳实践


分享到
分类 JS学习   关键字 JavaScript   发布 ourjs  1426423816991
注意 转载须保留原文链接,译文链接,作者译者等信息。  

在哪并何时调用AngularJS中的$scope.$apply()方法?


上周末,我玩了一下Angular,看了一些知名的批评和缺陷。他们都涉及到$digest loop(更新周期)中一个很常见的问题:如何在Angular之外更新$scope?

在哪调用 $apply?


 更佳的做法是确保你是在$digest loop之外时调用$apply,比如在"link"指令(directive)响应函数内部使用。也就是说,只能在$controller之外调用$apply,这样它就可以访问到HTML或其他控制器的声明代码 - 比如apply调用link指令并触发相应功能,这时侯是肯定在$digest loop之外的。


如何处理AngularJS之外抛出的错误?


$scope.$apply()接收一个函数或Angular表达式字符串,并执行它,然后调用 $scope.$digest()来更新所有绑定或侦听者。

如果你的代码是不是包裹在函数中传递给$apply,它抛出了一个错误,该错误在AngularJS之外抛出,这意味着在你的应用中的错误处理机制无法处理它。$apply不仅仅执行你的代码,它内部的try / catch语句让你的错误总是能被捕捉到,并且$digist是最后的保障,它意为着即使一个错误抛出,它仍能运行。这是相当不错的。

因此,我们应该将表述改为在Angular之外且在$apply之内更新$scope。

总结


希望您现在了解应该何时以及如何使用$apply()。如果你只需要AngularJS为您提供的功能,那您用到它的概率并不高。但是,如果你写自定义指令,并且直接操纵DOM元素,理解它是很有必要的。




相关文章

将BootstrapJS和AngularJS结合使用以及为什么不用jQuery
AngularJS在大型单页面应用中的性能优化(


原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 将BootstrapJS和AngularJS结合使用以及为什么不用jQuery
  2. NativeScript的工作原理:用JavaScript调用原生API实现跨平台
  3. Session劫持与Session-ID的安全长度
  4. 用原生HTML5控件实现输入框自动提示(下拉列表补全)功能
  5. 使用Node.JS监听文件夹变化
  6. 我为什么不再用Compass写CSS(缺点分析)
  7. 微软,IBM,ARM等大公司先后加入对Node.js/io.js的支持
  8. 微软博客:Angular 2将基于TypeScript
  9. 使用Google Analytics跟踪捕获JavaScript,AngularJS,jQuery的在线错误和异常
  10. 如何隐藏自己的程序员气息
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. 微软,IBM,ARM等大公司先后加入对Node.js/io.js的支持
  2. 用原生HTML5控件实现输入框自动提示(下拉列表补全)功能
  3. 让我们写快速的JavaScript,JS性能优化小窍门
  4. 通过Web Audio API可视化输出MP3音乐频率波形
  5. 用页面可见性(Page Visibility)API创建用户体验良好的网站
  6. 理解Node.js的事件循环(Event Loop)和线程池
  7. 从一行CSS调试代码中学到的JavaScript知识
  8. 在nodejs中使用Redis缓存和查询数据及Session持久化(Express)
  9. 在ExpressJS(NodeJS)中设置二级域名跨域共享Cookie
  10. 在(Raspberry Pi)树莓派上安装NodeJS

 关键字 - JavaScript
  1. 用原生HTML5控件实现输入框自动提示(下拉列表补全)功能
  2. 如何用CSS将select/option文本居中或居右对齐
  3. JavaScript中怪异的地方
  4. 在JavaScript中创建命名空间的几种写法
  5. JavaScript中的继承,构造函数以及new关键字的作用
  6. 纽约时报使用Html5 WebRTC记录访问者IP地址
  7. 正则中test、exec、match的简单区别,以及括号的用法
  8. NativeScript的工作原理:用JavaScript调用原生API实现跨平台
  9. 2015年的JavaScript:Angular之类的框架将被库取代
  10. 少年,不要滥用箭头函数啊:JS中lambda表达式的优缺点和使用场景

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号