【发布时间】:2016-08-24 18:36:18
【问题描述】:
我有两个同级元素。一个是图像,另一个是 div。如果图像存在,我想显示图像元素,如果图像不存在,我想显示 div 元素。我的元素看起来像
<img ng-show="product.img" ng-src="{{product.img}}" />
<div class="left margin-right-1 line-height-15" ng-hide="product.img">{{product.img}}</div>
而product.img 的结果类似于/assets/images/prod.jpg。由于这是一个字符串,所以ng-show 将始终为真,并且将显示图像标签。因此,如果图像不存在,它将显示为损坏的图像。所以基本上我想要的是如果图像不存在,图像标签隐藏并显示 div,反之亦然。
我尝试过类似的javascript函数
$scope.imageExists = function(src) {
var image = new Image();
image.src = src;
if (image.width == 0) {
return false;
} else {
return true;
}
}
并更改了我的图像标签,例如
<img ng-show="product.img" ng-src="{{imageExists(product.img)}}" />
但这非常昂贵。我每页有 100 个产品,当它遍历所有图像时,页面变得非常非常慢。
如果图像存在与否,任何人都可以指导我以角度显示和隐藏图像元素的最佳方式是什么。
【问题讨论】:
-
你可以试试 ng-if 而不是 ng-show。 ng-if 将其从 dom 中删除。不过,我不能说这会带来什么性能提升。
-
没有图片时为什么不能
product.img === null或undefined? -
ng-if不检查图像是否存在。我想检查图像是否存在
标签: javascript html angularjs image