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 相关文章推荐
Code: write(s,d) 输出连续字符串
Aug 19 Javascript
JS中toFixed()方法引起的问题如何解决
Nov 20 Javascript
jquery validate在ie8下的bug解决方法
Nov 13 Javascript
漂亮实用的页面loading(加载)封装代码
Feb 03 Javascript
原生JS实现图片翻书效果
Feb 16 Javascript
jQuery实现简单的滑动导航代码(移动端)
May 22 jQuery
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 Javascript
ReactNative短信验证码倒计时控件的实现代码
Jul 20 Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 Javascript
vue-content-loader内容加载器的使用方法
Aug 05 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
Jun 25 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
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
简单介绍Python中的decode()方法的使用
2015/05/18 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
anaconda如何查看并管理python环境
2019/07/05 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Keras搭建自编码器操作
2020/07/03 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
村委会换届选举方案
2014/05/03 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
服装店员工管理制度
2015/08/07 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
Navicat for MySQL的使用教程详解
2021/05/27 MySQL