2013-05-20 106 views
6

这工作:为什么{{}}在src属性中不起作用?为什么我需要ngSrc?

<a href="{{myAwesomeLink}}">It's a link. A dynamic one, at that.</a> 

但这并不:

<img src="{{URLtoMyPerfectImage}}"> 

一个需要使用ngSrc代替。我可以知道为什么会出现这种情况吗?我有一个类似的问题得到'src'(或者它'href'?我不记得)在Handlebars.js中工作并放弃它(交付压力)。

这是一个普遍的浏览器问题或类似的东西?

回答

13

扩展我上面的答案,而

<a href="{{myAwesomeLink}}">It's a link. A dynamic one, at that.</a> 

的作品,它是不是在使用动态角创建链接的最佳实践。任何时候在锚标签中使用数据绑定时,都应该使用ng-href指令。因此,对于定位标记代码应该是这样的:

<a ng-href="{{myAwesomeLink}}">It's a link. A dynamic one, at that.</a> 

直接从角的文档:

采用了棱角分明的标记像一个href属性,使得页面打开一个错误的URL,如果用户点击该角度之前的链接有机会用实际的URL代替,链接将被打破,并很可能会返回404错误。 ngHref指令解决了这个问题。

这有助于我们了解NG-SRC:因此,与

<img src="{{imgPath}}"> 

浏览器尝试加载图像,但角度还没有更换SRC中括号内的表达,所以图像加载失败。通过使用

<img ng-src="{{imgPath}}"> 

你告诉浏览器等待加载图像,直到括号内的表达已经被填充,从而加载正确的图像。

4

documentation提到这个

采用了棱角分明的标记像{{哈希}}在src属性不起作用 权利:浏览器将网址提取与文字文本 {{}哈希}直到Angular替换{{hash}}中的表达式。 ngSrc指令解决了这个问题。

如果你仔细想想,javascript的数据绑定到你的HTML DOM加载HTML之后发生,所以浏览器看到INTIAL SRC作为{{url}},而一个有效的URL字符串和失败。

相关问题