angularjs理解

表现分离:能将应用中的对象很好的隔离开来,因此师徒不需要知道如何保存对象,只要知道如何显示它即可,这也意味着数据模型不需要同视图进行交互,只需要包含数据和操作视图的方法,控制器用来存放将两者绑定在一起的方法。
脏检查:当angularjs认为某个值可能发生了变化时,它会运行自己的事件循环来检查这个值是否变“脏”。如果该值从上次事件循环运行之后发生了变化,则该值被认为是脏治。这也是angularjs可以跟踪和响应应用变化的方式,这个过程被称为脏检查.
双向数据绑定意味着如果试图改变了某个值,数据模型会通过脏检查观察到这个变化,而如果数据模型改变了某个值,视图也会依据变化重新渲染.

$digest()和$apply(),
angularjs双向绑定,通过了解双向绑定的实现可以知道,应用在运行的过程中,一定存在循环的脏检查,angularjs会通过$digest进行循环的脏检查,保证在model的数据发生变化时通知view进行更新,angularjs不会直接调用$digest而是通过调用$scope.$apply()来调用

 

什么时候手动调用$apply()方法?

如果AngularJS总是将我们的代码wrap到一个function中并传入$apply(),以此来开始一轮$digest循环,那么什么时候才需要我们手动地调用$apply()方法呢?实际上,AngularJS对此有着非常明确的要求,就是它只负责对发生于AngularJS上下文环境中的变更会做出自动地响应(即,在$apply()方法中发生的对于models的更改)AngularJSbuilt-in指令就是这样做的,所以任何的model变更都会被反映到view中。但是,如果你在AngularJS上下文之外的任何地方修改了model,那么你就需要通过手动调用$apply()来通知AngularJS。这就像告诉AngularJS,你修改了一些models,希望AngularJS帮你触发watchers来做出正确的响应

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值