浅谈angularJS中src与ng-src属性的区别

图片初始化报错404的异常
浏览器解析html的顺序:
1) 浏览器加载静态HTML文件并解析为DOM;
2) 浏览器加载angular.js文件;
3) angular监听 DOMContentLoaded 事件,监听到时开始启动;
4) angular寻找ng-app指令,确定作用范围;
5) 找到app中定义的Module使用$injector服务进行依赖注入;
6) 根据injector服务创建compile服务用于编译;
7) $compile服务编译DOM中的指令、过滤器等;
8) 使用ng-init指令,将作用域中的变量进行替换;
9) 最后生成了我们的最终视图。
	因此,angular框架是在DOMcontent加载完毕后才开始发挥作用。假如我们模板中有一张图片如下:
<img src="{{imageUrl}}" />,浏览器解析HTML为DOM的时候会把src="{{imageUrl}}"原样解析,因此会报404的错误
	ng-src指令的本质是先从$scope的内存中获取ng-src的属性值,再赋值给src的属性值,因此当ng-src属性值获取到了url时,浏览器会解析为<img ng-src="url" src="url"></img>,最终其显示图片作用的还是src属性
	ng-src属性会做两件事:
第一步:先判断ng-src的属性值是否为null或者空字符串
第二步:如果不为null或者空字符串,就会把自己的值赋值给src属性
第三步:如果为null或者空字符串,就不会把自己的值赋值给src属性

案例
	1.<img ng-src="{{imageUrl}}"></img>	       //结果都为imageUrl
	浏览器会解析为	<img ng-src="{{imageUrl}}" src="{{imageUrl}}"></img>	

	2.<img ng-src="{{imageUrlOne}}" src="{{imageUrlTwo}}"></img>	//结果都为imageUrlOne
	浏览器会解析为	 <img ng-src="{{imageUrlOne}}" src="{{imageUrlOne}}"></img>	

	3.<img ng-src="" src="{{imageUrl}}"></img>	//结果都为imageUrl
	浏览器会解析为	 <img ng-src="" src="{{imageUrl}}"></img>	

注意:
	通常我们会使用<img ng-src="{{imageUrl}}"/>解决初始化时url报错的问题;但是这样有个弊端,当我们需要清空图片信息时,需要设置$scope.url=null或者空字符串,那么将无法影响src属性,也就是说图片仍然显示清空前的图片,但是提交无法提交上去,即:
//初始值
<img ng-src="{{imageUrl}}"/>
浏览器解析为:<img ng-src="{{imageUrl}}" src="{{imageUrl}}"/>
//对ng-src重新赋值为空
$scope.imageUrl="";
//结果
<img  src="{{imageUrl}}"/> 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值