Javascript 如果使用src而不是ng src,angular如何仍然渲染图像?
根据angular docs及其解释,我们应该在图像url为角度表达式的图像标记中使用Javascript 如果使用src而不是ng src,angular如何仍然渲染图像?,javascript,angularjs,Javascript,Angularjs,根据angular docs及其解释,我们应该在图像url为角度表达式的图像标记中使用ng src而不是src e、 g. 但是在我的例子中,如果我使用src,浏览器仍然渲染图像。在控制台中,我可以看到一个失败的图像调用,它试图访问精确的表达式,如../Desktop/%7B%7Bcountry.flagURL%7D%7D 但是,稍后还有另一个对图像的调用,该调用是从angular.js启动的,它实际渲染图像并将其显示在浏览器中 所以我的问题是-如果使用src可以实现同样的效果,那么ng src
ng src
而不是src
e、 g.
但是在我的例子中,如果我使用src
,浏览器仍然渲染图像。在控制台中,我可以看到一个失败的图像调用,它试图访问精确的表达式,如../Desktop/%7B%7Bcountry.flagURL%7D%7D
但是,稍后还有另一个对图像的调用,该调用是从angular.js启动的,它实际渲染图像并将其显示在浏览器中
所以我的问题是-如果使用src
可以实现同样的效果,那么ng src
有什么用?似乎只会有一个额外的网络呼叫。当我不使用
ngsrc
时,在角度上渲染图像会发生什么
下面是我的代码片段。你可以跑过去看看
Angular.js示例
var countryApp=angular.module('countryApp',[]);
countryApp.controller('CountryCtrl',函数($scope,$http){
数据=[
{
“名称”:“中国”,
“人口”:1359821000,
“flagURL”:https://upload.wikimedia.org/wikipedia/commons/f/fa/Flag_of_the_People%27s_Republic_of_China.svg"
},
{
“名称”:“印度”,
“人口”:1205625000,
“flagURL”:https://upload.wikimedia.org/wikipedia/en/4/41/Flag_of_India.svg"
},
{
“名称”:“美利坚合众国”,
“人口”:312247000,
“flagURL”:https://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg"
}
];
$scope.countries=数据;
});
国家
人口
旗帜
{{country.name}
{{国家人口}
带有
<img ng-src="{{country.flagURL}}" width="100">
Angular在计算ng src中的表达式之前不会加载图像
但是,
<img src="{{country.flagURL}}" width="100">
浏览器尝试加载带有原始(未计算)表达式的图像,这导致对服务器的GET
请求失败。但只要角度加载并计算src
标记下的表达式,浏览器就会用新的url值重新呈现图像标记
简而言之,
ngsrc
只是停止加载图像,直到执行表达式以避免初始无效请求(使用无效URL)。检查ng src
的实现。它只是添加了src
标记图像,从而导致GET
请求图像。如果浏览器在初始化angular应用程序之前加载图像,会发生什么情况。图像标记将具有错误的src url、原始角度表达式。是@MatejP的解释可能重复@正如您所指的Ceylamumunkucable所说,为什么要使用ngSrc
而不是src
。我的查询是完全开放的,它如何与src
!!希望这能澄清我的疑问。@maximusツ 没错。Img标记将具有错误的src url,因此它不应显示图像。但在我的例子中,它显示图像并正确地替换src
,尽管我没有使用ngsrc
。那么,这是怎么发生的?