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

空的ng-src不会更新图片

赵嘉赐
2023-03-14
问题内容

我正在使用 ng-src 指令,以避免浏览器在Angular评估表达式之前请求图像。

ng-src={{image}}如果表达式“ image”更改,将更新图像的 src 属性。我误解了为什么如果表达式(“
myImage.png”)为空(“”),则 ng-src 指令不会更新图像的路径。

当表达式为空时, ng-src 属性为空,但是 src 属性仍然是最后一个已知的 src 。因此它不会更新图像。为什么不更新 src
属性(将其更新为空 src ),以使图像“消失”。

这是一个矮人

谢谢


问题答案:

答案在 Angular 代码中。这不是错误,只是他们决定想要的行为。从13895行开始,您可以看到以下指令代码:

forEach(['src', 'srcset', 'href'], function(attrName) {
   var normalized = directiveNormalize('ng-' + attrName);
   ngAttributeAliasDirectives[normalized] = function() {
   return {
      priority: 99, // it needs to run after the attributes are interpolated
      link: function(scope, element, attr) {
          attr.$observe(normalized, function(value) {

         if (!value)
             return;

         attr.$set(attrName, value);

         if (msie) element.prop(attrName, attr[attrName]);
       });
     }
    };
  };
});

关键在:

if (!value) return;

如您所见,如果将 ng-src 表达式更改为空字符串,则永远不会更改实际的 src 值。您可以执行MadScone建议的操作来解决此问题。



 类似资料:
  • 问题内容: 我用来加载图像。值是从一些范围变量加载的,如下所示: 我的问题是,当我运行时,它会使属性为空,但不会在属性中反映出来。因此,我不断看到需要空占位符的图像。 我该如何处理? 问题答案: 这是ngSrc和ngHref指令的预期行为。这些指令仅支持识别新路径,但是当路径不可用时,这些指令将以静默方式退出(我在这里看到一个拉取请求。)。 因此,当图像变量不再可用时,可能的解决方法是将ngSho

  • 问题内容: 可能是愚蠢的问题,但是我的html表单带有简单的输入和按钮: 然后在控制器中(从routeProvider调用模板和控制器): 为什么单击按钮后,视图在控制台中正确更新但未定义? 谢谢! 更新:似乎我实际上已经解决了该问题(在不得不提出一些解决方法之前),方法是:只需将我的属性名称从更改为,然后在控制器中定义空对象,瞧……不知道它为什么起作用虽然;] 问题答案: 控制器作为 版本(推荐

  • 问题内容: 我正在通过ng-repeat循环渲染数据。而且我希望它在更新数组时进行更新。从我阅读的内容来看,这应该会自动发生,但是这是行不通的。那我在做什么错? 的HTML: 控制器(此功能通过ng-click在按钮上触发): Console.log显示该数组已正确更新,但是我视图中的表未更改。我不知道我在做什么错。 问题答案: 那是因为您在method中更改了数组引用。 为了避免这种情况,我们使

  • 我正在使用chart.js在html页面中创建多个图表,并且在Windows加载之后,图表将以每秒的速度动态更新,并使用新的数据值。我正在使用chart.js update()函数处理更新。所有创建的图表都存储在全局数组中,然后获取这些图表进行更新。 当我第一次打开html页面时,每秒都会更新图形(显示实时测量数据),但当我移动到webapp中的另一个子页面,然后返回到图形应该所在的页面时,所有画

  • 问题内容: 我正在尝试使用array 更新 ng-grid。我 这里 有个小伙伴。 添加按钮添加新行。更新按钮更新阵列中的最后一项。 选择一行并按更新按钮。没发生什么事。 按添加按钮。现在,UI将使用新元素&以及以前更新的元素进行更新。 相同的行为一次又一次地重复。 我试过了。我得到: “错误:$ apply已经在进行中” 我什至尝试通过将块放置在呼叫中来进行尝试。同样是同样的错误! 任何指针!

  • 问题内容: 本教程演示了指令的使用,而不是: 他们要求: 用普通的旧src属性替换ng-src指令。 使用Firebug或Chrome的Web检查器之类的工具,或检查Web服务器的访问日志,确认该应用确实确实对 /app/%7B%7Bphone.imageUrl%7D%7D (或 / app / {{phone .imageUrl}} )。 我这样做了,它给了我正确的结果: 有什么原因吗? 问题答