这篇文章主要介绍了关于角的前端面试题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强> 1,ng-if跟ng-show/隐藏的区别有哪些? 强>
第一点区别是,<代码> ng-if> 代码在后面表达式为真正<代码> 代码>的时候才创建这个dom <代码> 代码>节点,<代码> ng-show> 代码是初始时就创建了,用<代码>显示:块代码>和<代码>显示:没有> 代码来控制显示和不显示。
第二点区别是,<代码> ng-if> 代码会(隐式地)产生新作用域,<代码> ng-switch 代码>,<代码> ng-include> 代码等会动态创建一块界面的也是如此。
这样会导致,在<代码> ng-if> 代码中用基本变量绑定<代码> ng-model> 代码,并在外层<代码> p> 代码中把此模型<代码> 代码>绑定给另一个显示区域,内层改变时,外层不会同步改变,因为此时已经是两个变量了。
& lt; p>{{名称}}& lt;/p> & lt; div  ng-if=皌rue"祝辞 & lt; input 类型=皌ext", ng-model=皀ame"比; & lt;/div>
<代码> ng-show> 代码不存在此问题,因为它不自带一级作用域。
避免这类问题出现的办法是,始终将页面中的元素绑定到对象的属性(数据。x)而不是直接绑定到基本变量(x)上。
<强> 2,ng-repeat迭代数组的时候,如果数组中有相同值,会有什么问题,如何解决? 强>
会提示<代码>复制在一个中继器不允许> 代码。加 track by $index
可解决。当然,也可以 trace by
任何一个普通的值,只要能唯一性标识数组中的每一项即可(建立 dom
和数据之间的关联)。
3,ng-click 中写的表达式,能使用 JS 原生对象上的方法吗?
不止是 ng-click
中的表达式,只要是在页面中,都不能直接调用原生的 JS
方法,因为这些并不存在于与页面对应的 Controller
的 $scope
中。
4、factory、service 和 provider 是什么关系?
factory
:把 service
的方法和数据放在一个对象里,并返回这个对象
service
:通过构造函数方式创建 service
,返回一个实例化对象
provider
:创建一个可通过 config
配置的 service
,$get
中返回的,就是用 factory
创建 service
的内容
从底层实现上来看,service
调用了 factory
,返回其实例;factory 调用了 provider
,返回其 $get
中定义的内容。factory
和 service
功能类似,只不过 factory
是普通 function
,可以返回任何东西(return
的都可以被访问,所以那些私有变量怎么写,你懂的);
service
是构造器,可以不返回(绑定到 this
的都可以被访问);
provider
是加强版 factory
,返回一个可配置的 factory
。
5、angular 中控制器之间如何通信?
1、Service
2、events
,指定绑定的事件
3、使用 $rootScope
4、controller
之间直接使用$parent, $$childHead
等
5、directive
指定属性进行数据绑定
6,angular 的数据绑定采用什么机制?详述原理
使用的脏检查机制,所谓的双向绑定,其实就是从界面的操作能实时反映到数据,数据的变更能实时展现到界面。AngularJS
在$scope
变量中使用脏值检查来实现了数据双向绑定,并且可以通过$scope.美元看> 代码来监听变化触发回调;
<代码>角> 代码中使用的是脏检查机制,在<代码>角> 代码中每次你绑定一些东西到你的UI上时你就会往<代码> 代码>队看美元列里插入一条<代码>美元看> 代码,当我们的模版加载完毕时,也就是在<代码>与代码>阶段(<代码>角> 代码分为<代码> >代码编译阶段和<代码>与代码>阶段——译者注),<代码>角> 代码解释器会寻找每个<代码>指令> 代码,然后生成每个需要的<代码>美元看代码>。
当浏览器接受到可以被<代码>角上下文> 代码处理的事件时就会触发<代码> 代码>消化循环,这个循环是由两个更小的循环组合起来的,一个是<代码>美元看> 代码列表,一个是<代码>美元evalAsync>