使用此指令。
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