使用此指令。
app.directive('fallbackSrc', function() {
return{
link: function postLink(scope, element, attrs) {
element.bind('error', function() {
angular.element(this).attr("src", attrs.fallbackSrc);
});
}
}
});
用法:
<img ng-src="{{employee.id}}.jpg" fall-back-src="default.jpg"/>
否则创建实际源的指令,像下面
app.directive('actualSrc', function() {
return{
link: function postLink(scope, element, attrs) {
attrs.$observe('actualSrc', function(newVal, oldVal){
if(newVal != undefined){
var img = new Image();
img.src = attrs.actualSrc;
angular.element(img).bind('load', function() {
element.attr("src", attrs.actualSrc);
});
}
});
}
}
});
用法:
<img actual-src="{{employee.id}}.jpg" ng-src="default.jpg"/>
Pluker
这是我尝试过。但是它会导致一个 “?”默认加载之前的图像。我想知道他们是否是避免这种情况的一种方法,即只要求提供正确的图像。 – vicsz 2014-09-25 15:56:47
嘿@vicjugador尝试更新的代码。 – 2014-09-25 17:47:05
更好..但似乎该指令在{{employee.id}}被注入之前被调用(和失败)。因此默认图像仍然显示。如果我硬编码员工编号,事情会正常工作。 – vicsz 2014-09-26 13:45:52