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 相关文章推荐
动态加载JS文件的三种方法
Nov 08 Javascript
利用JQuery直接调用asp.net后台的简单方法
Oct 27 Javascript
原生js获取left值和top值的三种方法
Aug 02 Javascript
JavaScript 中Date对象的格式化代码方法汇总
Sep 06 Javascript
详解Angular5路由传值方式及其相关问题
Apr 28 Javascript
vue实现未登录跳转到登录页面的方法
Jul 17 Javascript
vue+axios实现文件下载及vue中使用axios的实例
Sep 21 Javascript
Vue加载json文件的方法简单示例
Jan 28 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 Javascript
JS校验与最终登陆界面功能完整示例
Jan 13 Javascript
JS实现判断移动端PC端功能
Feb 21 Javascript
五句话帮你轻松搞定js原型链
Dec 09 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
用PHP4访问Oracle815
2006/10/09 PHP
PHP提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
Python中字典的基本知识初步介绍
2015/05/21 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
python实现可逆简单的加密算法
2019/03/22 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
求职简历中的自我评价分享
2013/12/08 职场文书
2014年党支部学习材料
2014/05/19 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
2015党建工作简报
2015/07/21 职场文书