当前位置: 首页 > 面试题库 >

用Angular.js预加载图像的最佳方法

曹育
2023-03-14
问题内容

Angular的ng-
src会保留以前的模型,直到它在内部预加载图像为止。我在每个页面上的横幅使用不同的图像,当我切换路线时,我更改主视图,保留标题视图,仅在拥有它时更改bannerUrl模型。

这导致在加载新的横幅图像时看到先前的横幅图像。

令我惊讶的是,目前还没有指令,但是我想在尝试构建指令之前先进行讨论。

我想做的是在自定义属性上设置横幅模型。喜欢:

<img preload-src="{{bannerUrl}}" ng-src="{{preloadedUrl}}">

然后$ scope.watch更改bannerUrl,并在更改后立即用loader spinner替换ng-src,然后创建临时img
dom元素,从preload-src预加载图像,然后将其关联到preloadUrl。

例如,还需要考虑如何为画廊处理多个图像。

有人对此有意见吗?也许有人可以指出我现有的代码?

我已经在github上看到了使用background-image的现有代码-
但这对我不起作用,因为我的应用程序具有响应能力,因此我需要动态的高度/宽度,而我无法使用background-image来实现。

谢谢


问题答案:

在指令上具有2个url似乎有点复杂。我认为更好的是编写一个像这样的指令:

<img ng-src="{{bannerUrl}}" spinner-on-load />

并且该指令可以ng-src使用微调器监视和(例如)设置是否可见性:false,直到图像加载完毕。所以像这样:

scope: {
  ngSrc: '='
},
link: function(scope, element) {
  element.on('load', function() {
    // Set visibility: true + remove spinner overlay
  });
  scope.$watch('ngSrc', function() {
    // Set visibility: false + inject temporary spinner overlay
  });
}

这样,元素的行为就非常类似于带有ng-src属性的标准img ,只是附加了一些额外的行为。

http://jsfiddle.net/2CsfZ/47/



 类似资料:
  • 问题内容: 我完全意识到,无论是在SO还是离线状态下,这个问题在任何地方都被提出并得到了回答。但是,每次似乎都有不同的答案,例如this,this和that。 我不在乎是否在使用jQuery-重要的是它可以工作,并且是跨浏览器的。] 那么,预加载图像的最佳方法是什么? 问题答案: 不幸的是,这取决于您的目的。如果您打算将图像用于样式目的,则最好的选择是使用精灵。 但是,如果您打算使用标记中的图像,

  • 问题内容: 我整理了一个非常类似于flickr照片流功能的脚本。两个缩略图彼此相邻,当您单击下一个或上一个链接时,下一个(或上一个)两个图像就会滑入其中。 当前,页面加载时将加载两个图像。第一次使用nxt / prv时,随后的两个图像或前两个图像通过ajax加载,第一个图像的ID在url中传递,而两个新图像的HTML通过ajax返回并显示。 足够简单,但是我不得不考虑在连接速度慢或服务器负载重的情

  • 问题内容: 我正在寻找一种快速简单的方法来用JavaScript预加载图像。如果重要的话,我正在使用jQuery。 但是,对于我想要的东西来说似乎有点过高了! 我知道那里有执行此操作的jQuery插件,但它们看上去都很大(大小);我只需要一种快速,轻松和简短的方式来预加载图像! 问题答案: 快速和简单的: 或者,如果您想要一个jQuery插件:

  • 问题内容: 我有一个隐藏的联系表单,单击该按钮即可进行部署。它的字段设置为CSS背景图像,它们的出现时间总是比已切换的div晚一点。 我在本节中使用了此代码段,但运气不好(清除缓存后): 我正在使用jQuery作为我的库,如果我也可以使用它来解决此问题,那将很酷。 多谢您的光临。 问题答案: 我可以确认我的原始代码似乎有效。我随便坚持使用错误路径的图像。

  • 问题内容: 我在下面编写的功能是否足以在当今大多数(如果不是全部)浏览器中预加载图像? 我有一个图像URL数组,可以循环访问这些URL,并为每个URL 调用该函数。 问题答案: 是。这应该适用于所有主要的浏览器。

  • 本文向大家介绍Android 加载GIF图最佳实践方案,包括了Android 加载GIF图最佳实践方案的使用技巧和注意事项,需要的朋友参考一下 起因 最近在项目中遇到需要在界面上显示一个本地的 GIF 图。按照惯例我直接用了 Glide 框架来实现。 Glide 地址: https://github.com/bumptech/glide 我用的 Glide版本为 4.0.0-RC1 , 具体的实现