发表于: 2017-01-15 23:58:09
0 1225
angularjs 中的$apply。
$apply()函数可以从Angular框架的外部让表达式在Angular上下文内部执行。例如,假设你实现了一个setTimeout()或者使用第三方库并且想让事件运行在Angular上下文 内部时,就必须使用$apply()。
通常可以依赖于Angular提供的可用于视图中的任意指令来调用$apply()。所有ng-[event]
指令(比如ng-click、ng-keypress)都会调用$apply()。
此外还可以依赖于一系列Angular内置的服务来调用$digest()。比如$http服务会在XHR请求完成并触发更新返回值(promise)之后调用$apply()。
无论何时我们手动处理事件,使用第三方框架(比如jQuery、Facebook API),或者调用setTimeout(),都可以使用$apply()函数让Angular返回$digest循环。
当我们将jQuery和Angular集成在一起时(推荐不同时使用这两个框架),就需要使用$apply(),因为Angular不会察觉到执行在Angular上下文外部的事件。例如,在使用jQuery插件时(比如datepicker),就需要使用$apply()将来自jQuery的值传递到Angular应用中
例子:
datepicker插件暴露了一个onSelect事件,这个事件会在用户选择日期时触发。为了在Angular应用内部获取用户选择的日期,我们需要在$apply()函数内运行datepicker的回调函数
以上。
评论