angular 数据绑定之[]和{{}}的区别


Posted in Javascript onSeptember 25, 2018

问题描述

在学习angular时,在示例代码写到加载图片时,书中推荐使用单向数据绑定符号[]来绑定图片的路径,然后双花括号的写法是错的。

尝试

首先,按书中推荐的写法:

<img [src]="imgUrl" />

这里就省略了控制器中定义变量的代码。

然后又按书中说错误的方式进行尝试:

<img src="{{ imgUrl }}" />

最后的测试结果发现两种写法都可以正常加载图片,并没有出现将{{ imgUrl }}解析成字符串的问题。

重读

发现没有达到预期的效果,所以就又重新看了一下书中是怎么说的:

如果浏览器在Angular运行起来之前就加载了这段模板,就会尝试以字符串{{ imgUrl }}为Url来加载图片,这当然会得到一个“404 Not found”错误。在Angular运行起来之前,浏览器会在页面显示一个破损的图像。

仔细读了上面的原文,发现出现错误是有条件的。那什么时候才会触发上面的错误呢?

猜测

联想到angularjs中的双花括号,与angular类似,之前在使用的时候就会出现变量没有被正常加载的问题,导致页面直接显示{{...}}的现象。当时出现这种问题是在加载缓慢,或者重复刷新。原因就是模板加载完成了,但是angularjs并没有加载完全。

所以,我就大胆猜测,当angular加载缓慢的时候,{{}}的写法就会出现问题。

(这里笔者经过几次尝试,并没有出现问题。如果有人尝试出,欢迎指正。)

两种绑定的区别

使用[]和{{}}的区别并不大,两者都是一种angular中的单向绑定实现方式,却别就是使用{{}}的形式,会将括号中的表达式解析完成后,再将结果转换成字符串。而[]不会转换成字符串。

总结

有些问题可能以我们目前的水平并不能很好的解释,但是做出一个令自己信服的猜测还是很容易的。哪怕这个猜测在未来的某一天被证实是错误的,那只会是你新的积累的开始。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 构造函数,公有,私有特权和静态成员定义方法
Nov 30 Javascript
简洁Ajax函数处理(示例代码)
Nov 15 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
javascript自执行函数
Feb 10 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
Mar 30 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
Apr 27 Javascript
Vue源码探究之虚拟节点的实现
Apr 17 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
vue中touch和click共存的解决方式
Jul 28 Javascript
使用原生javascript开发计算器实例代码
Feb 21 Javascript
Vue高版本中一些新特性的使用详解
Sep 25 #Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
Sep 25 #Javascript
vue实现多个元素或多个组件之间动画效果
Sep 25 #Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
Sep 25 #Javascript
Vue页面跳转动画效果的实现方法
Sep 23 #Javascript
vue解决弹出蒙层滑动穿透问题的方法
Sep 22 #Javascript
vue如何解决循环引用组件报错的问题
Sep 22 #Javascript
You might like
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
一个数据采集类
2007/02/14 PHP
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
Jquery中CSS选择器用法分析
2015/02/10 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
python创建和删除目录的方法
2015/04/29 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
Python异常处理例题整理
2019/07/07 Python
python实现桌面气泡提示功能
2019/07/29 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
小学生元旦感言
2014/02/26 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
财产公证书格式
2014/04/10 职场文书
年终奖发放方案
2014/06/02 职场文书
运动员口号
2014/06/09 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
交通事故案件代理词
2015/05/23 职场文书
大学生党课感想
2015/08/11 职场文书
SQL基础的查询语句
2021/11/11 MySQL