如何在AngularJS中显示占位符图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在AngularJS中显示占位符图像相关的知识,希望对你有一定的参考价值。

使用AngularJS,在特定视图中,我们使用图像的自然大小来驱动布局(使用最大高度,最大宽度,但让图像尽可能地扩展以适应该区域)。

我们还根据图像的预定高度和宽度以及主色信息,使用占位符数据uri作为图像。我们这样做的原因是因为使用画布图像为我们提供了相同的“自然”大小调整信息,我们不必不断地重新计算div的宽度和高度,以便调整大小,同时保持宽高比等。

因此,该指令首先使用Canvas创建一个数据uri并将其设置为scope.imgSrc的值,然后稍微延迟(只是一个$timeout(0))后,我们用实际的图像源url更新该范围值。

不幸的是,这并不总是有效。通常,在我们已经更新范围值以指向真实URL之后,模板才会实际呈现。结果是数据uri永远不会被渲染到屏幕上,我们最终只显示真实的URL。在慢速网络上,这意味着占位符应该是空白区域,因为占位符永远不会呈现。

无论如何要保证在切换值之前至少呈现一次?

答案

我最终使用的解决方案是删除dataURI值的图像的自定义onload指令,使用dataURI或img源与img标记本身结合使用。

在模板中:

<img ng-src="{{dataURI || imageSource}}" custom-onload="removeDataURI()">

在指令中:

scope.dataURI = getTheCanvasBasedURI();
scope.imageSource = getTheRealImageURL(); // this is async.

scope.removeDataURI = function() {
  scope.dataURI = undefined;
}

以上是关于如何在AngularJS中显示占位符图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AngularJS 中为未定义的表达式值显示占位符?

AngularJS:Datepicker 指令如何在占位符中有今天的日期

如何在延迟加载期间在图像占位符上显示“加载”gif图像

如何在 Ionic 2 或 3 应用程序中加载实际图像之前显示占位符图像

客户自己的品牌形象的形象占位符

如何将图像放入 jEditable 占位符?