Angular 面试题
2017-03-30 本文已影响0人
emoipower
ng-if跟ng-show/hide的区别有哪些?
- 1.ng-if在表达式为true的时候才创建DOM节点,ng-show是初始化时就创建用display:none与display:block来控制显示和不显示
- 2.ng-if会(隐式的)产生新作用域,ng-switch、ng-include等会动态创建一块界面的也是如此,这样会导致ng-if用基本变量绑定ng-model不会进行双向绑定,因为此时已经是两个变量了
- 3.ng-if是控制DOM节点的增加、删除实现的
ng-repeat重复数组时有相同值
- 用track by $index来解决
filter过滤器
- date 日期
- currency 货币
- limitTo 限制数组或字符串长度
- orderBy 排序
- lowercase 小写
- uppercase 大写
- number 格式化数字
- filter 处理一个数组 过滤含有某个字符串的元素
- json 格式化Json对象
- filter有两种使用方法,
- 1.在页面里
- 2.在js里 $filter
自定义服务的几种方式
- $factory:把service的方法和数据放到创建的一个对象里,并且返回这个对象
- $service:通过构造函数new创建出来service 返回一个实例化对象,this指向不一样
- $provider:可以传进.config()函数的service,当想要在service对象启用之前,先进性模块范围的配置,应该用provider
angular双向数据绑定机制
- 脏检查机制
- 当处理事件时 触发$digest流程 从rootscope开始循环遍历,检查所有$watch进行数据更新
- $digest循环的上限是10次(超出后抛出异常)
- click事件产生一次更新的操作(至少触发两次$digest循环)
angular模块(组件)之间的通信
- 第一种是借助父 controller。在子 controller 中向父 controller 触发( $emit )一个事件,然后在父 controller 中监听( $on )事件,再广播( $broadcast )给子 controller ,这样通过事件携带的参数,实现了数据经过父 controller,在同级 controller 之间传播。
- 2.service
- 3.$rootScope
angular 应用常用哪些路由库,各自的区别是什么?
- ng-Route 、ui-Router
- ng-Route是angular自带路由模块
- ui-router 是基于ng-route开发的第三方模块
- ui.router 是基于 state (状态)的
- ngRoute 是基于 url 的
- ui.router模块具有更强大的功能,主要体现在视图的嵌套方面。
- 使用 ui.router 能够定义有明确父子关系的路由,并通过 ui-view 指令将子路由模版插入到父路由模板的 <div ui-view></div> 中去,从而实现视图嵌套。而在 ngRoute 中不能这样定义,如果同时在父子视图中 使用了 <div ng-view></div> 会陷入死循环。
- 详述 angular 的 “依赖注入”
- 赖注入是一种软件设计模式,目的是处理代码之间的依赖关系,减少组件间的耦合。
- 原理:AngularJS是通过构造函数的参数名字来推断依赖服务名称的,通过 toString() 来找到这个定义的 function 对应的字符串,然后用正则解析出其中的参数(依赖项),再去依赖映射中取到对应的依赖,实例化之后传入。
解释下什么是$rootScrope以及和$scope的区别?
- 俗的说$rootScrope 页面所有$scope的父亲。
Angular Directive中restrict 中分别可以怎样设置?scope中@,=,&有什么区别?
- ECMA
- 在scope中,@,=,&在进行值绑定时分别表示
- @获取一个设置的字符串,它可以自己设置的也可以使用{{yourModel}}进行绑定的;
- = 双向绑定,绑定scope上的一些属性;
- & 用于执行父级scope上的一些表达式,常见我们设置一些需要执行的函数
优化 Angular 应用的性能
- 减少监控项(比如对不会变化的数据采用单向绑定)
- 主动设置索引(指定 track by,简单类型默认用自身当索引,对象默认使用 $$hashKey,比如改为 track by item.id)
- 降低渲染数据量(比如分页,或者每次取一小部分数据,根据需要再取)
- 数据扁平化(比如对于树状结构,使用扁平化结构,构建一个 map 和树状数据,对树操作时,由于跟扁平数据同一引用,树状数据变更会同步到原始的扁平数据)