当前位置: 首页 > 面试题库 >

绑定和摘要在AngularJS中如何工作?

萧琛
2023-03-14
问题内容

使AngularJS与其他JavaScript-MVC框架区分开的一件事是,它能够使用绑定将JavaScript中的绑定值回传到HTML。当您为$
scope变量分配任何值时,Angular会“自动”执行此操作。

但是,这有多自动化?有时,Angular不会接受更改,因此我需要调用$ scope。$ apply()或$ scope。$
digest()来通知angular来获取更改。有时,当我运行这些方法中的任何一个时,都会引发错误并指出摘要已在进行中。

因为绑定({{}}大括号或ng属性中的任何内容)都用eval回显,那么这是否意味着Angular会不断轮询$
scope对象以查找更改,然后执行eval将这些更改推送到DOM /
HTML?还是AngularJS以某种方式找出了使用魔术变量来触发事件,这些事件在变量值更改或分配时触发?我从未听说过所有浏览器都完全支持它,所以我对此表示怀疑。

AngularJS如何跟踪其绑定和范围变量?


问题答案:

我认为,除了Mark发现的文档部分外,我们还可以尝试列举所有可能的变更来源。

  1. 用户与HTML输入(“文本”,“数字”,“ URL”,“电子邮件”,“无线电”,“复选框”)的交互。AngularJS具有inputDirective。“文本”,“数字”,“ URL”和“电子邮件”输入为“输入”或“按键按下”事件绑定侦听器处理程序。侦听器处理程序调用scope。$ apply。’radio’和’checkbox’为click事件绑定了类似的处理程序。
  2. 用户与选择元素的交互。AngularJS的selectDirective在’change’事件上具有类似的行为。
  3. 使用$ timeout服务的定期更改也可以执行$ rootScope。$ apply()。
  4. eventDirectives(ngClick等)也使用scope。$ apply。
  5. $ http还使用$ rootScope。$ apply()。
  6. 众所周知,AngularJS之外的更改应使用scope。$ apply。


 类似资料:
  • 问题内容: 数据绑定在框架中如何工作? 我尚未在其网站上找到技术细节。数据从视图传播到模型时,或多或少地清楚了它是如何工作的。但是,AngularJS如何在没有设置者和获取者的情况下跟踪模型属性的变化? 我发现有些JavaScript观察程序可以完成这项工作。但是Internet Explorer 6和Internet Explorer 7不支持它们。那么AngularJS如何知道我更改了以下内容

  • 问题内容: 在摘要循环中,对变量进行脏检查,即是否有100个范围变量,并且如果我更改一个变量,则它将监视所有变量。 假设我有100个彼此独立的范围模型变量。如果我对一个变量进行了更改,那么我不想检查所有其他99个变量。有什么办法吗?如果是,怎么办? 问题答案: 令人惊讶的是,这通常不是问题,即使具有数千个绑定,浏览器也不会出现问题,除非表达式很复杂。的常见答案 是 。 解决方案: 从开始,这很容易

  • 问题内容: 除非您强制执行,否则在Angular /Jasmine测试中,诺言似乎无法解决。这是愚蠢的IMO,但是很好,我可以在适当的地方(控制器)进行工作。 我现在遇到的情况是我有一个服务,该服务可能不太在乎应用程序中的任何作用域,它所做的只是从服务器返回一些数据,但诺言似乎无法解决。 测试此功能的正确方法是什么? 编辑:解决方案以供参考。 显然,即使服务未使用$ rootScope,您也不得不

  • 问题内容: 我正在探索python。我对python绑定感到好奇。任何人都可以解释一下,如何有可能从Python访问C库。 问题答案: 有几种方法可以从Python调用用C编写的代码。 首先,标准库中有ctypes模块。它允许您加载动态链接库(Windows上为DLL,Linux上为共享库)并直接从Python调用这些库中的函数。此类库通常用C编写。 其次,对于CPython,有Python /

  • 问题内容: 您可以在抽象类上提供实现吗? 两者有什么区别? 我什么时候知道何时使用它们? 问题答案: 这些页面提供了很好的比较:http : //download.oracle.com/javase/tutorial/java/IandI/abstract.html。您可以通过非常快速的Google搜索找到它。

  • 实验概要 这一章的实验指导中,你将会学到: 单独生成 ELF 格式的用户程序,并打包进文件系统中 创建并运行用户进程 使用系统调用为用户程序提供服务