ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

angluar框架面试题

2020-06-15 09:56:19  阅读:268  来源: 互联网

标签:面试题 angluar 框架 watch 列表 遍历 apply Angular digest


1.angluar的核心

    1)MVC\2)模块化、3)自动化双向数据绑定 4)语义化标签、依赖注入等。

2.angluar的数据绑定采用什么机制?详书原理

anglaur的双向数据绑定采用脏检查机制。ng只有在指定事件触发后,才进入$digest cycle:

-DOM事件,譬如用户输入文本,点击按钮等。

-XHR响应事件($http)

-浏览器Location变更事件($location)

-Timer事件($timeout,$interval)

-执行$digest()或$apply()

例如,<input> 标签绑定了$scope.name属性,为了更新这个视图,Angular需要追踪变化。它是通过给$watch列表添加一个监控函数做到这一点。而$watch列表会在$digest循环中通过一个叫做"脏值检查"的程序解析。

脏值检查: Angular会持续追踪当前监控的值。Angular会遍历$watch列表,如果从旧值更新后的值没有发生变化,它会继续遍历监控列表。如果值发生了变化,则Angular会启用新值并继续遍历$watch列表。Angular会遍历完整个列表,只要有任何值发生变化,它就会退回到$watch循环中,直到检测到不再发生变化。如果这个循环运行了10次或者更多,则Angular会抛出一个异常,并停止运行。

简单解释:$watch列表里添加了监控函数---->Angular遍历监控列表------>Angular发现了变化----->启用变化后的新值--->受变化值的影响,$watch列表中的其他值,可能跟随着一起发生了变化,也可能没有.因此Angular会进行二次巡查,直到监听的值没有再发生变化

$apply()与$digest()

  $apply()函数可以从Angular框架的外部让表达式在Angular上下文内部执行,并让结果受控(进行digest循环)。例如实现了一个setTimeout()并想让事件运行在Angular上下文内部时,就必须使用$apply()

$scope.apply(function(){
     setTimeout(function(){
         //...
     }, 1000)
})

  或者直接通过调用$digest()函数进行digest循环,以进行脏值检查

//..some action
$scope.$digest();

3.依赖注入(DI)

   让我们可以不用自己实例化就能创建依赖对象的方法,简单来说,依赖是以注入的方式传递的,Angular让我们可以通过DI来创建像Controllers和Directives这样的对象. 我们还可以创建自己的依赖对象, 当我们要实例化它们时, Angular能自动实现注入.

标签:面试题,angluar,框架,watch,列表,遍历,apply,Angular,digest
来源: https://www.cnblogs.com/wzw-gjh/p/13129293.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有