angular十大常见问题
AngularJS可以视为是一种数据优先的框架,在它的三个层面中,数据模型是骨架,视图模型和业务事件是血肉,视图模板和指令是皮毛,这三层合在一起,就形成了一个活生生的Web应用。
1.ng-if的情况下,始终将页面中的元素绑定到对象的属性(data.x)而不是直接绑定到基本变量(x)上。因为ng-if会(隐式地)产生新作用域。
2.ng-repeat迭代数组的时候,如果数组中有相同值,会有什么问题,如何解决? 加trackby$index可解决。也可以traceby任何一个普通的值
3.ng-click中写的表达式,能使用JS原生对象上的方法吗?不能用,只要是在页面中,都不能直接调用原生的JS方法。因为这些并不存在于与页面对应的Controller的$scope中。
{{13.14|parseIntFilter}}
app.filter('parseIntFilter',function(){ returnfunction(item){ returnparseInt(item); } })
4.{{now|'yyyy-MM-dd'}}这种表达式里面,竖线和后面的参数通过什么方式可以自定义?
ng内置的filter有九种:
date(日期)
currency(货币)
limitTo(限制数组或字符串长度)
orderBy(排序)
lowercase(小写)
uppercase(大写)
number(格式化数字,加上千位分隔符,并接收参数限定小数点位数)
filter(处理一个数组,过滤出含有某个子串的元素)
json(格式化json对象)
5.filter有两种使用方法,一种是直接在页面里:
{{now|date:'yyyy-MM-dd'}}
另一种是在js里面用:
//$filter('过滤器名称')(需要过滤的对象,参数1,参数2,...) $filter('date')(now,'yyyy-MM-ddhh:mm:ss');
自定义filter
//形式 app.filter('过滤器名称',function(){ returnfunction(需要过滤的对象,过滤器参数1,过滤器参数2,...){ //...做一些事情 return处理后的对象; } }); //栗子 app.filter('timesFilter',function(){ returnfunction(item,times){ varresult=''; for(vari=0;i6.factory、service和provider是什么关系?
factory返回的是一个对象,而service返回的是一个实例化对象,绑定到this的都可以被访问。provider是加强版factory,返回一个可配置的factory
7.性能问题
作为MVVM框架,因为实现了数据的双向绑定,对于大数组、复杂对象会存在性能问题。
可以用来优化Angular应用的性能的办法:
减少监控项(比如对不会变化的数据采用单向绑定)
主动设置索引(指定trackby,简单类型默认用自身当索引,对象默认使用$$hashKey,比如改为trackbyitem.id)
降低渲染数据量(比如分页,或者每次取一小部分数据,根据需要再取)
数据扁平化(比如对于树状结构,使用扁平化结构,构建一个map和树状数据,对树操作时,由于跟扁平数据同一引用,树状数据变更会同步到原始的扁平数据)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!