当前位置: 首页 > 编程笔记 >

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

东郭骁
2023-03-14
本文向大家介绍angular 数据绑定之[]和{{}}的区别,包括了angular 数据绑定之[]和{{}}的区别的使用技巧和注意事项,需要的朋友参考一下

问题描述

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

尝试

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

<img [src]="imgUrl" />

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

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

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

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

重读

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

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

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

猜测

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

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

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

两种绑定的区别

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

总结

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我对这些概念有些模糊,如果我完全在AngularJS和ReactJS中构建相同的ToDo应用程序,那么,什么使React ToDo使用单向数据绑定而不是AngularJS的双向数据绑定? 我了解React之类的作品 渲染(数据)—> UI。 这与Angular有何不同? 问题答案: 角度的 当角度设置数据绑定时,存在两个“观察者”(这是一种简化) 输入将以开始,然后更新为1000ms。

  • 问题内容: 给出这样的例子: 我试图了解以下两个摘要之间的区别是: “绑定数据”样式: “初始数据”样式: 该文档似乎建议“初始不是用于动态初始值”,但是能够将“绑定数据”传递给构造函数可以实现完全相同的功能。我过去曾使用初始数据作为动态值,但我很想使用更直接的“绑定数据”样式,但希望对这两种样式之间的真正区别有一些了解。 问题答案: 这是django文档中有关绑定和未绑定表单的关键部分。 一个F

  • 还有其他实现“数据绑定”的模式吗?

  • 本文向大家介绍静态绑定和动态绑定之间的区别,包括了静态绑定和动态绑定之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解静态绑定和动态绑定之间的区别。 静态绑定 它在编译时解决。 它使用类和字段的类型。 它使用私有,最终和静态方法和变量。 示例:重载 动态绑定 在运行时解决。 虚方法使用此技术。 它使用对象来解决绑定。 示例:方法覆盖。

  • if绑定 if绑定应用在页面元素中,并通过表达式判断是否为元素添加子元素的绑定。if绑定在功能上非常像visible绑定,但在实现上却有很大的不同。visible绑定是为元素添加css样式来控制元素是否显示,if绑定是控制元素的字元素,如果表达式为true,则为元素添加子元素,否则清空子元素。 示例代码: //.W片段 <label> <input type="checkbox" bind-c

  • 本文向大家介绍AngularJS和Angular之间的区别。,包括了AngularJS和Angular之间的区别。的使用技巧和注意事项,需要的朋友参考一下 AngularJS AngularJS是基于JavaScript的开源前端框架,主要用于开发Web上的单页应用程序。它将静态HTML丰富为动态HTML。它通过提供指令来扩展现有的HTML。它的最新稳定版本是1.7.7。 角度的 Angular是