在作用域中执行代码
$eval
12345678/***$eval接收2个参数*fn需要在作用中执行的函数*(可选)传入的参数**/Scope.prototype.$eval=function (fn,locals) {return fn(this,locals);}$apply
有时候我们需要执行与Angular无关的方法(比如window.setInerval),但是这些方法改变了作用域中的数据,我们希望监听到这些变化,这时候我们需要通过$apply传入方法。12345678Scope.prototype.$apply=functin (fn) {try {return this.$eval(fn);} finally {//$digest的执行放在finally中,以确保即使报错也会执行this.$digest();}}延迟执行的函数
在angular中我们可以用$apply传递一个计时器(setInterval)来实现延迟执行函数,也可以调用内部的$interval和$timeout。Angular中还有一种延迟执行的方法$evalAsync。
$evalAsync会将一个函数推入计划中。这个函数会在这次$digest或者下次$digest之前执行。