zoukankan      html  css  js  c++  java
  • angularjs现学现记之—$apply()和$digest()

    angularjs的双向数据绑定是个重要的特性,它让我们的代码简洁了许多,然而它又是如何知道数据发生了变化并改变页面的呢。最近看了一篇介绍觉得十分有用

    首先,在angularjs中是有$watch事件的,他的作用就是用来监听数据的变化,并且其有一个参数为回调函数,在发生变化时会执行该函数,而$digest()则是一个循环程式,当其被调用的时候就会循环遍历并触发所有model发生变化了的$watch。再说到$apply(),他就是angularjs用来调用$digest的,一般情况下它都会根据上下文的变更来自动调用,但是如果你在上下文以外的环境中更改了model,那么就需要手动调用$apply来告诉程序你进行了改动,请检查页面。比如,如果你使用了JavaScript中的setTimeout()来更新一个scope model,那么AngularJS就没有办法知道你更改了什么。这种情况下,调用$apply()就是你的责任了,通过调用它来触发一轮$digest循环

    以上理解来自于http://www.cnphp6.com/archives/64167的博客,如有兴趣其正文中有更详细的解释和案例。

  • 相关阅读:
    leetcode Simplify Path
    leetcode Evaluate Reverse Polish Notation
    leetcode Swap Nodes in Pairs
    leetcode MinStack
    leetcode length of the last word
    empty能否代替isset?
    thinkphp框架的路径
    PHP 反射类的简单使用!
    在windows下配置redis扩展
    phpmyadmin的windows下和linux下的安装。
  • 原文地址:https://www.cnblogs.com/weblv/p/5163488.html
Copyright © 2011-2022 走看看