我在 a 中显示和图像如下:
<div class="logo-wrap" ng-if="fallback=src">
<img class="logo" ng-src="{{logo_src}}" fallback-src="/app/ci/images/1x1.png" />
</div>
我想删除 如果我的图像正在使用回退 src。我的后备指令是:
angular.module('myApp').directive('fallbackSrc', function () {
var fallbackSrc = {
link: function postLink(scope, iElement, iAttrs) {
iElement.bind('error', function () {
angular.element(this).attr("src", iAttrs.fallbackSrc);
});
}
}
return fallbackSrc;
});
{{logo_src}}
从 API 返回一串图像 URL,因此由浏览器来查找图像或抛出 404,这就是我有一个 fallbackSRC 指令的原因。现在的问题是,当我们使用回退 src 时,我想删除父<div>
(当有图像时我需要)。
我需要什么ng-if
表达式来检测 img src 是否正在使用回退 src?
假设您的指令在 logo_src
变量不可用时使用回退源,请使用
<div class="logo-wrap" ng-if="logo_src">
<img class="logo" ng-src="{{logo_src}}" fallback-src="/app/ci/images/1x1.png" />
</div>
此代码表示当logo_src
可用时,将呈现div。
我认为如果 src 等于 fallbackSarc 的值,您将需要更改指令以隐藏图像。我想不出ngIf
找出 src 和 fallbackSrc 进行比较的方法。上述ngIf
仅在logo-src
变量上没有值时才隐藏logo-wrap
。
如果您想在出现 404 错误时隐藏指令,您的 html 代码将需要像这样更改......
<div class="logo-wrap">
<img class="logo" ng-src="{{logo_src}}" fallback-src="/app/ci/images/1x1.png" />
</div>
和你的指令...
angular.module('myApp').directive('fallbackSrc', function () {
var fallbackSrc = {
link: function postLink(scope, iElement, iAttrs) {
// Remember to remove the class hidden if the image src changes.
iElement.bind('error', function () {
angular.element(this).attr("src", iAttrs.fallbackSrc).parent().toggleClass("hidden", true);
});
}
}
return fallbackSrc;
});
隐藏类的 CSS ...
.hidden {
display: none;
}
我承认,这个解决方案并没有以您想要的方式解决问题,即不会删除div,但我相信它达到了相同的结果。