在显示 HTML 之前检查 JS 值是不是存在

Posted

技术标签:

【中文标题】在显示 HTML 之前检查 JS 值是不是存在【英文标题】:check if JS value exists before displaying HTML在显示 HTML 之前检查 JS 值是否存在 【发布时间】:2020-01-14 12:02:17 【问题描述】:

我想显示以下带有角度值的 html;仅当值存在时,我如何将以下内容包装在 if 语句中,以检查值是否首先存在,然后是否存在;显示这个内部 html。

我想内联执行此操作;理想情况下使用三元运算符。

<span class="bloCK" ng-mouseover="showPopover()" ng-mouseleave="hidePopover()"><a href="website.coolUrl" target="_blank">Cool Website</a></span>

【问题讨论】:

您使用的是哪个版本的 Angular?因为这看起来更像 AngularJS,和 Angular 有很大的不同... AngularJS 你是对的;对不起我的错字! How can I conditionally display HTML in a button using AngularJS?的可能重复 【参考方案1】:

我猜你所说的“价值”是website.coolUrl,在这种情况下你可以这样做:

<span ng-if="website && website.coolUrl"
    class="bloCK" ng-mouseover="showPopover()"
    ng-mouseleave="hidePopover()">
  <a href="website.coolUrl" target="_blank">Cool Website</a></span>

更新...糟糕!

只有在我发布此内容后,我才看到您指的是 AngularJS,而不是 Angular。我为此修改了答案,但我已经很久没有做过任何 AngularJS 了。

【讨论】:

ng-if="website && website.coolUrl" 没有意义,简单的 ng-if="website.coolUrl" 也一样。为了避免问题,人们总是更喜欢 ng-href 而不是 href 由于我没有所有的情况细节,我无法确定website 本身是否总是可以被定义。在这种情况下,website &amp;&amp; website.coolUrl 更安全,因为它可以防止尝试访问可能未定义值的属性。我不确定 AngularJS,但 Angular 还支持website?.coolUrl 的形式以进行安全导航。 我知道从 Angular 的角度来看它可能看起来“更安全”:) 但是在 AngularJS 世界中,模板从不抱怨某些东西是未定义的。它可以为您节省大量代码......例如"a && a.b && a.b.c && a.b.c.d"

以上是关于在显示 HTML 之前检查 JS 值是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

如何在迭代值之前检查 jq 中是不是存在“键”

在检索值之前检查哈希映射键是不是存在[重复]

在搜索值之前检查视图中是不是存在列

如何在显示列之前检查 SELECT 语句是不是存在

在 MSSQL 中更新之前检查是不是存在唯一值

检查动态组件是不是存在