在sap.ui.commons.Image

时间:2016-10-21 05:45:30

标签: jquery sapui5

new sap.ui.commons.Image({src: "http://localhost:9090/images/some-image.jpg"});

如果http返回 404或某些错误,则假设上述操作失败。问题是请求是由Openui5内部发送的,因此无法从服务器端拦截。在这种情况下,是否有任何方法可以提供备用的 src ,如下所示:

如果出现http错误,

重定向网址 src:"http://localhost:8080/images/no-image.png"

我一直在尝试以下但是没有给出结果:

   $(document).ajaxError(function myErrorHandler(event, xhr, ajaxOptions, thrownError) {
   $.ajax({
        // Resend the req
        url: "http://localhost:8080/images/no-image.png"
        }); 
    //imageFile.setSrc("http://localhost:9090/images/no-image.png");
    }); 

2 个答案:

答案 0 :(得分:0)

您可以使用 setAlt 方法设置替代图片(如果找不到)

答案 1 :(得分:0)

我找到了一个使用formatter function作为收到的源路径的解决方案:

new sap.ui.commons.Image({src: {path : 'itemImg',formatter: function(itemImg){
        var ImageObject = new Image();
        ImageObject.src = itemImg;
        if(ImageObject.height>0){
        //alert("Ping worked!");
        return itemImg;
        }else {
        //alert("Ping failed :(");
        return "http://localhost:9090/images/no-image.png";
        }
    }}}).addStyleClass("itemImg"),

@Qualiture建议的替代解决方案

ImageObject.onload = function() {
    //alert('image loaded successfully.');
    return itemImg;
};
ImageObject.onerror = function(){
  //alert('image loading failed');
  return "http://localhost:9090/images/no-image.png";
};

注意:如果您认为使用height 0的图片毫无意义并且更好地显示default image,则使用第一个解决方案,否则后者更有效。