Vue v-if 语句检查变量是不是为空或 null

Posted

技术标签:

【中文标题】Vue v-if 语句检查变量是不是为空或 null【英文标题】:Vue v-if statement to check if variable is empty or nullVue v-if 语句检查变量是否为空或 null 【发布时间】:2020-07-01 21:45:19 【问题描述】:

我正在尝试使用 v-if 语句仅在 archiveNote 变量不为空/null 时显示一些 html

<div v-if="archiveNote === null || archiveNote ===''" class="form-check ml-3" id="include-note-div">

这是它的实例化方式

export default 
    name: "ConfirmReleaseFilesModal",
    props: 
        archiveName: String,
        archiveNote: String
    ,

然后从另一个 Vue 文件传入

<confirm-release-files-modal
    v-if="showConfirmReleaseFilesModal"
    @cancel="closeModal"
    @confirmAndEmail="releaseAction"
    @confirmNoEmail="releaseAction"
    :archive-name="archiveName"
    :archive-note ="archiveNote"
>
</confirm-release-files-modal>

archiveNoteconsole.log 时,HTML 块仍显示为空

【问题讨论】:

控制台在哪里?事后修改了吗? 【参考方案1】:

如果您只想在truthy 时显示&lt;div&gt;(不是空/null/等),您可以简单地这样做:

<div v-if="archiveNote">

这给出了与double bang 相同的结果:

<div v-if="!!archiveNote">

这两个表达式都将 javascript 的所有 8 个 falsy 值计算为 false

false null undefined 0 -0 NaN '' 0n (BigInt)

以及其他所有内容到true。因此,如果您的变量计算结果为除这些之外的任何值,那么它将是真实的,并且v-if 将显示。

以下是这些示例和一些真实示例的演示:

new Vue(
  el: "#app",
  data() 
    return 
      falsy: 
        'null': null,
        'undefined': undefined,
        '0': 0,
        '-0': -0,
        '\'\'': '',
        'NaN': NaN,
        'false': false,
        '0n': 0n
      ,
      truthy: 
        '[]': [],
        '': ,
        '\'0\'': '0',
        '1': 1,
        '-1': -1,
        '\' \'': ' ',
        '\'false\'': 'false',
        '5': 5
      
    
  
);
body 
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;


#app 
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;

#falsy, #truthy 
  display: inline-block;
  width: 49%;

.label 
  display: inline-block;
  width: 80px;
  text-align: right;

code 
  background: #dddddd;
  margin: 0 3px;
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div id="falsy">
    Falsy:
    <div v-for="(test, label) in falsy">
      <div class="label"> label </div>
      <code v-if="test">true</code>
      <code v-else>false</code>
    </div>
  </div>
  
  <div id="truthy">
    Truthy examples:
    <div v-for="(test, label) in truthy">
      <div class="label"> label </div>
      <code v-if="test">true</code>
      <code v-else>false</code>
    </div>
  </div>
</div>

【讨论】:

【参考方案2】:

这可能是由于在父组件中您将变量分配给错误命名的道具:archive-name="archiveName" 而不是:archiveName="archiveName"

【讨论】:

这个好像不是doc

以上是关于Vue v-if 语句检查变量是不是为空或 null的主要内容,如果未能解决你的问题,请参考以下文章

如何检查数据读取器是不是为空或为空

检查所有三列是不是不为空或为空

检查字符串是不是为空或为空的最简单方法

在 XSLT 中检查字符串是不是为空或空

如何检查 MySQL 中的列是不是为空或 null?

如何在 iOS 中检查 NSArray 是不是为空或为空?