Vue.js条件:如果包含

时间:2018-10-14 11:32:27

标签: vue.js vuejs2

我需要在Vue中创建条件以检查数组是否包含值。

items: { [1,5,8,12,63]}
                <div v-for="item in items">
                        <div v-if="item == 1">
                               Yes
                        </div>
                        <div v-else>
                            No
                        </div>
                </div>

输出为: 是,不,不,不,

我只需要一次获得“是”和“否”。 我需要:

是的,不是

2 个答案:

答案 0 :(得分:3)

v-for只会遍历整个数组,而v-if / v-else将有条件地为该数组中的每个项目呈现适当的代码块 。相反,您应该使用一种方法来检查您的items列表中是否有数字。您可以使用indexOf来做到这一点。

var app = new Vue({
  el: '#app',
  data: {
    items: [1, 5, 8, 12, 63]
  },
  methods: {
    itemsContains(n) {
      return this.items.indexOf(n) > -1
    }
  }
});
<div id="app">
  <div v-if="itemsContains(1)">
    Yes
  </div>
  <div v-else>
    No
  </div>
</div>

See this JSFiddle

如果需要的话,您也可以摆脱该方法并进行条件内联。

<div id="app">
  <div v-if="items.indexOf(1) > -1">
    Yes
  </div>
  <div v-else>
    No
  </div>
</div>

答案 1 :(得分:1)

var app = new Vue({
  el: '#app',
  data: {
    items: [1, 5, 8, 12, 63]
  }
});
<script src="https://cdn.jsdelivr.net/npm/vue"></script>

                

<div id="app">

  <div v-if="items.indexOf(1) > -1">
    Yes
  </div>
  <div v-else>
    No
  </div>
 
</div>