AngularJS检查image是否为404,并获取image src的动态URL
AngularJS check image for 404 and get dynamic URL for image src
这是我的中继器:
<div ng-click="selected(entity)" ng-if="entity.is_organization == true">
<div class="row">
<div class="cell info">
<span class="text" ng-bind-html="entity.label"></span>
</div>
<div class="cell img" ng-show="isImageAvailable">
<img class="image" ng-src="checkImageAvailable(entity.thumbnail[0])">
</div>
</div>
</div>
控制器中的checkImageAvailable
:
$scope.isImageAvailable = false;
$scope.checkImageAvailable = function(image_url){
var img = new Image();
img.onload = function (){
$scope.isImageAvailable = true;
};
img.onerror = function (){
$scope.isImageAvailable = false;
};
img.src = image_url;
if($scope.isImageAvailable){
return image_url;
}
};
我从JSON中得到entity.thumbnail[0]
,但即使它有一个URL它也不存在。所以我用checkImageAvailable
来检查。如果图像不可用,将isImageAvailable
设置为false,这样图像父容器ng-show
就会对浏览器隐藏图像占位符。同时在控制台日志中显示:http://localhost/checkImageAvailable(entity.thumbnail[0])
是404
我在AngularJS前面做的可能是什么错误
有一点是错误的,当你设置:
$scope.isImageAvailable = true; //or false
你在angular生命周期之外-所以你必须调用$scope.$apply()
;
任何时候你在angular事件之外改变angular作用域,你必须调用$apply()
。
检查isImageAvailable可能会为false,因为onerror/onload
将被异步调用,所以您可以立即返回image_url
。
编辑
所以你需要调用这样的方法:
ng-src="{{checkImageAvailable(entity.thumbnail[0])}}"
但是有一个问题,因为angular一直在循环中调用该方法。即使你做了:
ng-src="{{::checkImageAvailable(entity.thumbnail[0])}}"
仍然会被调用3次。我不知道为什么
所以在这一点上,我会尝试不同的方法:自定义指令。当它初始化时,你将图像设置为隐藏,将onload/onerror处理程序附加到元素上,然后根据调用哪个处理程序,显示图像或不显示图像。
让我知道如果它不合理。演示:http://jsbin.com/yenipodimi/1/edit?html、js、输出
相关文章:
- 无法使用nodeJS在html中设置Image src
- 如何使用jquery或javascript在image src中添加域url
- 从其他元素上的单击事件访问image src属性
- 关于使用image.src进行统计的问题
- 将image src数据:转换为Uint8Array
- 删除了wysihtml5.image src和href
- 如何在javascript中插入带有while循环的image src
- Joomla: image src path?
- Angularjs在node-webkit应用程序中将image src更改为“unsafe:”
- jQuery image.Load 事件不触发,如果 image.src 从 PageShow 事件设置并返回到同一页面
- Change image src onchange og Select
- image.setAttribute 和 image.src 之间的区别
- 在javascript中将image src设置为url
- knockoutjs根据一个值有条件地设置image src
- JQuery Onclick Change Image Src未刷新图像
- 如何使用Javascript查找Next Image src
- 替换javascript中的image src
- Javascript. OnClick Image src +1
- image src from a var?
- 如何在Canvas上加载Pdf文件作为image.src