javascript - Vue 用 v-if 设置 2 个条件

标签 javascript html vue.js vuejs2 vue-component

我正在练习 Vue 并遇到问题,是否可以使用 v-if 设置 2 个条件?我的意思是这是我的代码:

那么基本上是否可以使用 && 设置两个条件,或者应该以不同的方式完成?

更新的完整代码:

我尝试了 3 种方法,模板、方法和计算方法,它们都只检查一个条件

在你们的帮助下,我对它进行了一些修改,现在它可以工作了!非常感谢大家的帮助,但最后一件事,在控制台日志中它向我显示:“未捕获的类型错误:_vm.validated 不是函数”, 显示验证是否正确并不重要

<template>
  <div id='add-blog'>
      <h2>Add news Blog Post</h2>
      <form v-if='is_validated'>
          <label>User</label>
          <input type='text' v-model.lazy='user' required />
          <label>Password</label>
          <input type='password' v-model.lazy='password' required />
          <button v-on:click.prevent='validated'>Check me</button>
      </form>
      <div v-else>
          <p>error</p>
    </div>
  </div>
</template>

<script>
export default {
  components: {},
  data() {
    return {
      user: "",
      password: "",
      is_validated: true,
    };
  },
  computed: {
    validated() {
      if (this.user == 'name' &&  this.password == '111') {
          return this.is_validated = false;
      }
    }
  },
};
</script>

最佳答案

您当然可以在 v-if 语句中编写复杂的表达式。根据关于 expressions 的官方文档和 vue 中的指令

Directive attribute values are expected to be a single JavaScript expression

就我在您的示例中看到的情况而言,可能是您的单个文件组件与正确的结构不匹配。如果你看一下单个文件组件 guide

您将看到您的组件需要一个标签,并且您应该在内部使用您最喜欢的模板语言编写模板。如果将条件放入计算属性中,它也会更清晰。如果我们考虑到所有这些,您可以使用类似于此的代码来实现您的目标:

<template>
 <div>
   <form v-if="showForm">
      <label>User</label>
      <input type='text' v-model.lazy='user' required />
      <label>Password</label>
      <input type='password' v-model.lazy='password' required />
   </form>
   <div v-else>
     <p></p>
   </div>
 </div><!-- it's a good practice to have only one root element -->
</template>

<script>
export default {
  data() {
    return {
        user:'',
        password:''
    };
  },
  computed: {
   showForm () {
     return user != 'name' && password != '111';
   }
  }
};
</script>

关于javascript - Vue 用 v-if 设置 2 个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821440/

相关文章:

javascript - Vuejs 获取组件 HTML 并通过 ajax POST 发送

javascript - 您是否应该向前端公开一个将数据写入数据库的函数?

html - Bootstrap 4 : Can't Change Card Header Properties

javascript - .each() 表现得很奇怪

python - 使用 Pandas 风格我得到 KeyError : "None of . ...位于 [列]

javascript - 尝试保存 .vue 文件

javascript - 如何在 Angular 中使用第三方库动态创建组件?

javascript - 轻松集成 PhotoSwipe 的方法

javascript - 为什么我不能在我的组件中访问 Prop ?

javascript - Nuxt.js 和 Vue-i18next : Error: Cannot resolve "vue-i18next"