angular十大常见问题


Posted in Javascript onMarch 07, 2017

AngularJS可以视为是一种数据优先的框架,在它的三个层面中,数据模型是骨架,视图模型和业务事件是血肉,视图模板和指令是皮毛,这三层合在一起,就形成了一个活生生的Web应用。

1.ng-if的情况下 ,始终将页面中的元素绑定到对象的属性(data.x)而不是直接绑定到基本变量(x)上。因为ng-if 会(隐式地)产生新作用域。

2.ng-repeat迭代数组的时候,如果数组中有相同值,会有什么问题,如何解决?  加 track by $index 可解决。也可以 trace by 任何一个普通的值

3.ng-click 中写的表达式,能使用 JS 原生对象上的方法吗?不能用,只要是在页面中,都不能直接调用原生的 JS 方法。因为这些并不存在于与页面对应的 Controller 的 $scope 中。

<p>{{13.14 | parseIntFilter}}</p>
app.filter('parseIntFilter', function(){
  return function(item){
    return parseInt(item);
  }
})

4.{{now | 'yyyy-MM-dd'}} 这种表达式里面,竖线和后面的参数通过什么方式可以自定义?

ng 内置的 filter 有九种:

date(日期)

currency(货币)

limitTo(限制数组或字符串长度)

orderBy(排序)

lowercase(小写)

uppercase(大写)

number(格式化数字,加上千位分隔符,并接收参数限定小数点位数)

filter(处理一个数组,过滤出含有某个子串的元素)

json(格式化 json 对象)

5.filter 有两种使用方法,一种是直接在页面里:

<p>{{now | date : 'yyyy-MM-dd'}}</p>

另一种是在 js 里面用:

// $filter('过滤器名称')(需要过滤的对象, 参数1, 参数2,...)
$filter('date')(now, 'yyyy-MM-dd hh:mm:ss');

自定义 filter

// 形式
app.filter('过滤器名称',function(){
  return function(需要过滤的对象,过滤器参数1,过滤器参数2,...){
    //...做一些事情 
    return 处理后的对象;
  }
}); 

// 栗子
app.filter('timesFilter', function(){
  return function(item, times){
    var result = '';
    for(var i = 0; i < times; i++){
      result += item;
    }
    return result;
  }
})

6.factory、service 和 provider 是什么关系?

factory返回的是一个对象,而service返回的是一个实例化对象,绑定到 this 的都可以被访问。provider 是加强版 factory,返回一个可配置的 factory

7.性能问题

作为 MVVM 框架,因为实现了数据的双向绑定,对于大数组、复杂对象会存在性能问题。

可以用来 优化 Angular 应用的性能 的办法:

减少监控项(比如对不会变化的数据采用单向绑定)

主动设置索引(指定 track by,简单类型默认用自身当索引,对象默认使用 $$hashKey,比如改为 track by item.id)

降低渲染数据量(比如分页,或者每次取一小部分数据,根据需要再取)

数据扁平化(比如对于树状结构,使用扁平化结构,构建一个 map 和树状数据,对树操作时,由于跟扁平数据同一引用,树状数据变更会同步到原始的扁平数据)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Maps Javascript
Jan 22 Javascript
jQuery实现点击该行即可删除HTML表格行
Oct 17 Javascript
纯javascript实现简单下拉刷新功能
Mar 13 Javascript
JavaScript获取页面中超链接数量的方法
Nov 09 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
Feb 25 Javascript
js小数计算小数点后显示多位小数的实现方法
May 30 Javascript
Angularjs修改密码的实例代码
May 26 Javascript
p5.js入门教程之平滑过渡(Easing)
Mar 16 Javascript
浅谈vue引用静态资源需要注意的事项
Sep 28 Javascript
微信小程序 调用微信授权窗口相关问题解决
Jul 25 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 Javascript
微信小程序实现搜索功能
Mar 10 Javascript
Bootstrap表单控件学习使用
Mar 07 #Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
Mar 07 #Javascript
Bootstrap进度条实现代码解析
Mar 07 #Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
Mar 07 #Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
Mar 07 #Javascript
js仿网易表单及时验证功能
Mar 07 #Javascript
JS完成画圆圈的小球
Mar 07 #Javascript
You might like
实用函数8
2007/11/08 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
js查找父节点的简单方法
2008/06/28 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
Python中Yield的基本用法
2020/10/18 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
房屋买卖协议书范本
2014/04/10 职场文书
小学生操行评语大全
2014/04/22 职场文书
争先创优活动总结
2014/08/27 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python