【问题标题】: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>

【问题讨论】:

标签: javascript angularjs ternary-operator


【解决方案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"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 2019-05-12
相关资源
最近更新 更多