当前位置: 首页 > 知识库问答 >
问题:

vuejs v-仅针对数组中的几个元素,基于类别

贺海
2023-03-14

我得到了一个元素数组,我在页面上显示,使用 v-for:

<template>
  <v-container>
     <v-layout  row wrap v-for="offer in offers.slice((current_page-1)*5, current_page*5)">
        ...
    </v-layout>
  <v-container>
</template>

<script>
   export default{
      data(){
        offers: [array of offers here],
      }
   }

现在我决定添加类别并仅显示数组中某些类别的报价(数据类似于:offer.speciality[1] - 类别 1;优惠专业[2] - 类别 2 等...

所以我添加了最简单的v-Show元素,如下所示:

<v-layout  row wrap v-for="offer in offers.slice((current_page-1)*5, current_page*5)" 
v-show="checkArray(offer, speciality)">

和特殊变量(从选择中获取值)

<script>
   export default{
      data(){
        offers: [array of offers here],
        speciality:''
      }
   }

其中函数 checkArray 只是检查 specialityID 是否与 offer.speciality[i] 相同,并向 v-show 元素返回 true 或 false

    checkArray(offer, id){
        if (id)
        {
            for (var i in offer.specialities) {
                if (offer.specialities[i] == id)
                {
                  return true;
                  break;
                } 
            }
            return false;
        }
        else {
            return true;
        }
    },

一切正常,但是在这一点上,正如我们所知,v-show函数显示了一些报价,而隐藏了其余的报价,没有从DOM中删除它们,这使得分页(每页五个报价)无法配置,例如

显示特色优惠 1 -

offer.speciality[1]
offer.speciality[1]
offer.speciality[2] (display:none;)
offer.speciality[3] (display:none;)
offer.speciality[] (display:none;)
Pagination (1) 2 3 4 ...

那么我应该选择什么方法来代替 od v-show 来完成这项工作呢?我应该删除 v-show=“” 并在 v-for 中制作某种条件吗?如何使这个动态,而 v-for 是懒惰的,我正在从选择中触发特殊变量的变化?

共有1个答案

鄢晔
2023-03-14

我认为你应该对过滤的汽车使用计算属性,这里有一个例子

new Vue({
	el:"#app",
  data:{
  	manufacturer:'',
    cars: [
    				{manufacturer:"toyota", model:2012},
            {manufacturer:"ford", model:2013},
            {manufacturer:"subaro", model:2010},
            {manufacturer:"ford", model:2014},
            {manufacturer:"subaro", model:2010},
            {manufacturer:"ford", model:2016},
            {manufacturer:"dodge", model:2014},
            {manufacturer:"ford", model:2015},
            {manufacturer:"ford", model:2014}
            
          ],
    current_page:1
  },
  computed:{
  	filteredCars: function(){
    	var cars = []
    	if(this.manufacturer == ''){
      	cars = this.cars
      }
      else
      {
        cars = this.cars.filter(car => {
          if (car.manufacturer == this.manufacturer){
            return true
          }
          return false
        })
      }
      return cars.slice((this.current_page-1)*3, this.current_page*3)
    }
  }

})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.min.js"></script>
<div id="app">
  <label for="">Type manufacturer</label>
  <input type="text" v-model="manufacturer">
  <hr>
  <ul>
    <li v-for="car in filteredCars">{{car.manufacturer}} | {{car.model}}</li>
  </ul>
  
  <hr>
  <label for="">Page</label>
  <input type="number" v-model.number="current_page">
</div>
 类似资料:
  • 如果一个数组中的所有元素保存的都是 指针,那么我们就称它为 指针数组。指针数组的定义形式一般为: dataType *arrayName[length]; 的优先级高于 ,该定义形式应该理解为: dataType *(arrayName[length]); 括号里面说明 是一个数组,包含了 个元素,括号外面说明每个元素的类型为 。 除了每个元素的数据类型不同,指针数组和普通数组在其他方面都是一样的

  • 我正在尝试访问HTML代码中特定的元素。 定义元素的代码部分如下所示 。 在下面的第二行代码之后,我尝试声明表达式和,它们都返回java.lang.String类型的“oddrow cellcont” 但是,我尝试了下面的代码片段,它不能工作,因为循环中的条件返回false。我还尝试使用和、、、...以所有可能的组合使用if条件。 我肯定被困住了;我需要帮助。

  • 我有一个样式规则,当一个标记有两个类时,我想应用于它。在没有JavaScript的情况下,有什么方法可以执行此操作吗?换句话说: 只有在同时应用了和类时,我才要应用我的样式规则。

  • 是否有任何方法可以写入JSON路径,以基于前一个元素获取数组中下一个元素的值? JSON: 预期: 路径:$[0][如果匹配搜索文本]下一个|上一个 搜索文本:text 1输出(获取下一个值):值12输出(获取前一个值):值11 Searchtext:text2输出(获取下一个值):value22输出(获取上一个值):value21 我在用https://github.com/jayway/Jso

  • 本文向大家介绍jQuery针对各类元素操作基础教程,包括了jQuery针对各类元素操作基础教程的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery针对元素的操作,包括基础操作、选择要操作的元素及处理DOM元素等。对jQuery的学习有很好的借鉴价值。分享给大家供大家参考之用。具体分析如下: 1、基础 jquery对象集: $():jquery对象集合 获取jquery对象集中的元素

  • 我如何使用“insref”和“pref”对下面的元素进行分组,我在xslt版本1中使用了生成密钥id。 期望的结果: 这是我所拥有的。我也在使用密钥生成函数。任何想法这个xslt有什么问题。至于计数,我正在考虑获得唯一的密钥计数。