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

问题描述

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

尝试

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

前端精品教程:百度网盘下载

?


1

<img [src]="imgUrl" />

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

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

?


1

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

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

重读

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

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

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

猜测

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

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

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

两种绑定的区别

前端精品教程:百度网盘下载

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

总结

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

原文地址:https://www.cnblogs.com/hudayang2008/p/9813354.html

时间: 2024-08-24 22:21:08

angular 数据绑定之[]和{{}}的区别的相关文章

.NET 几种数据绑定控件的区别

GridView 控件 GridView 控件以表的形式显示数据,并提供对列进行排序.分页.翻阅数据以及编辑或删除单个记录的功能. 特征:一行一条记录,就像新闻列表一样:带分页功能. DataList 控件 DataList 控件以表的形式呈现数据,通过该控件,您可以使用不同的布局来显示数据记录,例如,将数据记录排成列或行的形式.您可以对 DataList 控件进行配置,使用户能够编辑或删除表中的记录.(DataList 控件不使用数据源控件的数据修改功能:您必须自己提供此代码.)DataLis

简话Angular 01 初识Angular 数据绑定

1. Angular有哪些突出优点 1) MVC 基于Html-Javascript 2) 依赖注入 3) 数据双向绑定,响应式页面设计 4) 模块化,自定义指令 2. 简话数据绑定 1) 代码: 1 <input type="text" ng-model="hello1"> 2 3 <input type="text" ng-model="hello2"> 4 5 <textarea ng-bi

angular 数据绑定

1.数据绑定 angular属于MVVM模式,视图更新后自动更新数据模型,数据模型更新后自动更新视图. 2.脏值检测 $watch:检测模型和视图是否同步,若没有同步,它将会使用新值来更新模型数据.即监控变量的变化,若变量值发生变化,执行$watch. $digest:触发当前作用域和它的子作用域上的$watch. $apply:触发整个作用域树上的所有$watch. $watch队列:在模板上绑定一个东西,就会往$watch队列里插入一条$watch. $digest循环:由两个更小的循环组合

ASP.NET几种页面数据绑定的用法及区别: &lt;%#、 &lt;%=、 &lt;% 、&lt;%@

< %#... %>: 是在绑定控件DataBind()方法执行时被执行,用于数据绑定 如: < %# Container.DataItem("tit") %> < %= %>: 在程序执行时被调用,可以显示后台变量值 如: *.ASPx中: < %= Title %> *.cs中: public string Title ="title"; < % %>: 内联代码块里面可以在页面文件*.aspx或*.a

Angular数据绑定调色板

<!DOCTYPE html><html ng-app="myapp"> <head> <meta charset="UTF-8"> <title></title> <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script> <

vue入门 vue与react和Angular的关系和区别

一.为什么学习vue.js vue.js兼具angular.js和react的优点,并且剔除了他们的缺点 官网:http://cn.vuejs.org/ 手册:http://cn.vuejs.org/v2/api/ 二.vue.js是什么 Vue是一个"MVVM框架(库)",和angular类似,相比angular小巧,比较容易上手 Vue是一个构建用户界面点的渐进式框架,与其他重量级框架不同的是,vue采用自底向上增量开发的设计 vue的核心库"只关注视图层",并

angular js jquery中post请求的一点小区别

这也是最近遇到的坑,还是之前那个项目,现在要实现登录功能. 背景:注册功能之前已经跑通了.前端用的是jquery后台是springMVC.鉴于注册和登录有些接口功能是类似的(比如注册确保邮箱是没有注册过,而登录是确保注册过),于是后台还准备用注册的那套接口. 登录的接口get请求是没问题的,但是post却出了问题:后台收不到请求体里的内容. 后来发现是jquery和angular的post行为有些区别,于是我做了个实验. <!DOCTYPE html> <html lang="

Angular数据双向绑定

Angular数据双向绑定 AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入等等. 一.什么是数据双向绑定 Angular实现了双向绑定机制.所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更能实时展现到界面. 一个最简单的示例就是这样: <div ng-control

Angularjs[2] - 数据绑定

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body ng-app> <input type="text" ng-model="name" value=""> <!