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

d15*_*596 15 javascript vue.js vue-component vuejs2

我试图使用一个v-if语句来显示一些 HTML,仅当archiveNote变量不为空/空时。

<div v-if="archiveNote === null || archiveNote ===''" class="form-check ml-3" id="include-note-div">
Run Code Online (Sandbox Code Playgroud)

这是它的实例化方式

export default {
    name: "ConfirmReleaseFilesModal",
    props: {
        archiveName: String,
        archiveNote: String
    },
Run Code Online (Sandbox Code Playgroud)

然后从另一个 Vue 文件传入

<confirm-release-files-modal
    v-if="showConfirmReleaseFilesModal"
    @cancel="closeModal"
    @confirmAndEmail="releaseAction"
    @confirmNoEmail="releaseAction"
    :archive-name="archiveName"
    :archive-note ="archiveNote"
>
</confirm-release-files-modal>
Run Code Online (Sandbox Code Playgroud)

的HTML仍然显示块的时候archiveNoteconsole.log出来为空

Dan*_*Dan 30

如果您想显示<div>唯一的真实值(不是空/空/等),您可以简单地执行以下操作:

<div v-if="archiveNote">
Run Code Online (Sandbox Code Playgroud)

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

<div v-if="!!archiveNote">
Run Code Online (Sandbox Code Playgroud)

这两个表达式都将 JavaScript 的所有 8 个值计算为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
      }
    }
  }
});
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)