vue 搜索功能

HTML 的内容

 <el-input v-model="number" placeholder="请输入编号" style="flex:1"></el-input>
 <el-checkbox v-for="city in selectData" :label="city.id" :key="city.id">
 </el-checkbox>

javascript 的内容

computed: {
	selectData() {
	const filterKeys = Object.keys(this.filters);
	return this.cities1.filter((item, index) => { //return 
          return filterKeys.every(key => { //return
            if (key == "value1") {
              if (!this.filters[key].length) {
                return true;
              } else {
                let gidateNotified = this.allData[index].gidateNotified;
                if (gidateNotified) {
                  let gidateNotifiedTime = new Date(gidateNotified[0] + '-' + gidateNotified[1] + '-' +
                    gidateNotified[2]);
                  if (gidateNotifiedTime >= this.filters[key][0] && gidateNotifiedTime <= this.filters[key][
                      1
                    ]) {
                    return true;
                  }
                }
              }
            } else if (key == "value2") {
              if (!this.filters[key].length) {
                return true;
              } else {
                let gidateOccurrence = this.allData[index].gidateOccurrence;
                if (gidateOccurrence) {
                  let gidateOccurrenceTime = new Date(gidateOccurrence[0] + '-' + gidateOccurrence[1] + '-' +
                    gidateOccurrence[2]);
                  if (gidateOccurrenceTime >= this.filters[key][0] && gidateOccurrenceTime <= this.filters[key][
                      1
                    ]) {
                    return true;
                  }
                }
              }
            } else if (key == "number") {
              if (!this.filters[key]) {
                return true;
              } else {
                let internalEncode = this.allData[index].internalEncode;
                let reg = new RegExp(this.filters[key], "i");
                console.log(reg);
                if (reg.test(internalEncode)) {
                  return true;
                }
              }
            } else if (key == "number1") {
              if (!this.filters[key]) {
                return true;
              } else {
                let eightCenterCode = this.allData[index].addedCenters;
                if (eightCenterCode == undefined) {
                  return false;
                } else {
                  let reg = new RegExp(this.filters[key], "i");
                  let Exl = false;
                  eightCenterCode.forEach(item => {
                    if (reg.test(item.eightCenterCode)) {
                      Exl = true;
                    } else {
                      Exl = false;
                    }
                  })
                  if (Exl) {
                    return true;
                  }
                }
              }
            } else if (key == "user") {
              if (!this.filters[key]) {
                return true;
              } else {
                let tenSearcherCode = this.allData[index].addedInvestigators;
                if (tenSearcherCode == undefined) {
                  return false;
                } else {
                  let reg = new RegExp(this.filters[key], "i");
                  let tip = false;
                  tenSearcherCode.forEach(item => {
                    if (reg.test(item.tenSearcherCode)) {
                      tip = true;
                    } else {
                      tip = false
                    }
                  })
                  if (tip) {
                    return true;
                  }
                }
              }
            } else if (key == "type") {
              if (!this.filters[key]) {
                return true;
              } else {
                let gitype = this.allData[index].gitype;
                if (this.filters[key] == gitype) {
                  return true;
                }
              }
            } else if (key == "important") {
              if (!this.filters[key]) {
                return true;
              } else {
                let related = this.allData[index].related;
                if (this.filters[key] == related) {
                  return true;
                }
              }
            } else if (key == "subtypeData") {
              if (!this.filters[key]) {
                return true;
              } else {
                let SubtypeNameUserName = this.allData[index].SubtypeNameUserName;
                let reg = new RegExp(this.filters[key], "i");
                if (reg.test(SubtypeNameUserName)) {
                  return true;
                }
              }
            } else if (key == "subjectNumber") {
              if (!this.filters[key]) {
                return true;
              } else {
                let nineSubjectsCode = this.allData[index].addedTestees;
                if (nineSubjectsCode == undefined) {
                  return false;
                } else {
                  let reg = new RegExp(this.filters[key], "i");
                  let nis = false;
                  nineSubjectsCode.forEach(item => {
                    if (reg.test(item.nineSubjectsCode)) {
                      nis = true;
                    } else {
                      nis = false
                    }
                  })
                  if (nis) {
                    return true;
                  }
                }
              }
            } else {
              return true;
            }
          })
        })
	},
	   watch: {
      value1(n) {
        this.filters.value1 = n.concat();
      },
      value2(n) {
        this.filters.value2 = n.concat();
      },
      number(n) {
        this.filters.number = n;
      },
      number1(n) {
        this.filters.number1 = n;
      },
      user(n) {
        this.filters.user = n;
      },
      subtypeData(n) {
        this.filters.subtypeData = n;
      },
      subjectNumber(n) {
        this.filters.subjectNumber = n;
      },
      type(n) {
        this.filters.type = n;
      },
      important(n) {
        this.filters.important = n;
      },
    },

对于 Vue 搜索功能只能搜索到当前页数据的问题,你可以通过以下步骤来实现搜索整个数据集的功能: 1. 在 Vue 组件中定义一个变量来存储整个数据集,例如 `dataList`。 2. 在搜索输入框中绑定一个 `v-model` 来实时获取用户输入的搜索关键字,例如 `searchKeyword`。 3. 在数据列表中使用 `v-for` 循环遍历 `dataList`,并使用 `v-if` 来判断是否符合搜索关键字的条件。 4. 在 `v-if` 中使用 JavaScript 的字符串搜索方法(如 `includes`)来判断当前项是否包含了搜索关键字。 5. 在搜索按钮的点击事件中,执行搜索逻辑,将符合条件的数据项筛选出来,并将结果保存到一个新的数组中。 6. 在页面上展示筛选后的结果。 以下是一个简单的示例代码: ```html <template> <div> <input type="text" v-model="searchKeyword" placeholder="请输入关键字"> <button @click="search">搜索</button> <ul> <li v-for="item in filteredDataList" :key="item.id">{{ item.name }}</li> </ul> </div> </template> <script> export default { data() { return { dataList: [ { id: 1, name: 'Apple' }, { id: 2, name: 'Banana' }, { id: 3, name: 'Orange' }, // 其他数据项... ], searchKeyword: '', }; }, computed: { filteredDataList() { if (this.searchKeyword) { return this.dataList.filter(item => item.name.includes(this.searchKeyword)); } else { return this.dataList; } }, }, methods: { search() { // 执行搜索逻辑 if (this.searchKeyword) { // 筛选出符合条件的数据项并保存到新的数组中 const result = this.dataList.filter(item => item.name.includes(this.searchKeyword)); // 处理搜索结果... } }, }, }; </script> ``` 在上述示例中,我们通过在 `filteredDataList` 计算属性中根据搜索关键字来筛选数据项,并在页面上展示筛选后的结果。同时,在搜索按钮的点击事件中也执行了相同的筛选逻辑,你可以根据实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值