Angular为我们提供了一些接口绑定JavaScript代码和数据,而绑定数据改变和更新angular则是使用$apply方法实现的。

$apply

  进行数据变化检查的实际上是$digest函数,但是我们往往不是直接使用$digest,而是使用$apply$apply接收表达式或者函数作为参数后调用$digest来更新绑定部门以及监控器。实际上,Angular几乎在所有提供的代码中添加了$apply,如ng-click,初始controller,$http的回调操作,在这,你并不需要亲自调用 $apply,而且重复的调用会引起错误。

  因此,当你运行了一个新阶段,并且这部分并不属于Angular库的情况下才需要使用$apply。这有一段关于setTimeout的代码,在经过了2000毫秒的延迟之后,代码进入执行了一个新的阶段,但是Angular并不知道数据有更新,因此更新并不会被显示。

function Ctrl($scope) {
$scope.message = "Waiting 2000ms for update"; setTimeout(function () {
$scope.message = "Timeout called!";
// AngularJS unaware of update to $scope
}, 2000);
}

在上面的代码中就需要调用$apply方法,手动调用,另外Angular提供了$timeout来代替setTimeout,相当于在其中默认调用$apply。一般直接使用Angular里面的方法则不用调用$apply方法。

  另外,除$http之外的Ajax调用,除了ng-*之外的监听器,或者除了$timeout之外的计时器,都应该使用$scope.$apply来同步显示绑定。如下例子,则是Ajax的例子。

$.ajax({
type: 'GET',
url: '/rest/caseinfo/getcaseinfobybh/' + bh,
contentType: "application/json",
success: function (data, textStatus) {
$scope.caseinfo = data;
$scope.$apply();
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
alert("获取异常 " + errorThrown);
}
});

  这里使用JQuery里面的方法,调用$scope域内的参数,则需要手动调用$apply方法。

随机推荐

  1. bzoj 1433 二分图匹配

    裸地匈牙利或者最大流,直接匹配就行了 需要注意的是(我就没注意细节WA了好多次...) 每个人和自己之间的边是0,但是应该是1 不是在校生是没有床的.... /******************** ...

  2. 阻塞DOM

    DOM是解析后的HTML. 这些阻塞因素我们可以叫做 阻塞渲染的资源 ,例如 HTML.CSS(也包括web font)和 JavaScript. 请注意,图像是不会阻塞渲染的 ,所以如果有图像落在蓝 ...

  3. 遍历文档内容,得到HTML层级结构

    嗯..没发现有写好的,那就自己写一个,刚好自己今天看了DOM操作的知识点,巩固一下. HTML可以表示为一个层次结构,生成的DOM Tree 就是类似与数据结构中的树一样,每个DOM节点都有它的chi ...

  4. Selenium tutorial/overview

    copy from: http://www.jroller.com/selenium/ Selenium tutorial/overview 1. Selenium Introduction 2. S ...

  5. VS mfc MessageBox() 和 AfxMessageBox()

    转载:http://blog.csdn.net/phenixyf/article/details/41744039 一.MessageBox()用法 1.函数原型 Messagebox函数在Win32 ...

  6. 【反演复习计划】【bzoj3994】DZY loves maths

    这题大概就是提取一下d,然后就跟前面的题目差不多了. #include<bits/stdc++.h> #define N 10000005 using namespace std; typ ...

  7. EasyUI的tree展开所有的节点或者根据特殊的条件控制展示指定的节点

    展示tree下的所有节点$(function(){ $('#t_funinfo_tree').tree({ checkbox: true, url:"<%=basePath %> ...

  8. Delphi指针详解

    Delphi指针详解2007-12-04 06:08:57|  分类: DLL学习 阅读91 评论0   字号:大中小 订阅 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用 ...

  9. 一个关于Java 多线程问题的知识点

    这个程序运行结果会是什么? public class Main {static class ListAdd { private static List list = new ArrayList(); ...

  10. SVN代码提交

    SVN代码提交(转载) 原文链接:http://www.softown.cn/post/100.html 1.SVN代码提交 1) 原则 先更新再提交: SVN是为了多人协同开发而产生的,如果你在提交 ...