vue 中实现搜索功能

10 篇文章 0 订阅

要想实现搜索功能主要是通过filter和includes来实现的。

 js部分代码:

//搜索对应绑定值
const search = reactive({
  status: "",
  dateTime: "",
  num: "",
  name: "",
  buy: ""
});
//搜索函数
const handleSearch = () => {
  let filtered = 关联数组;

  if (search.status) {
    //用于搜索下拉框的方法 精准搜索
    filtered = filtered.filter(data => data.status === search.status);
  }
  if (search.name) {
    //用于搜索输入框的方法  模糊搜索
    filtered = filtered.filter(data => data.userName.includes(search.name));
  }
  if (search.dateTime) {
    const searchTerm = search.dateTime.toLowerCase();
    filtered = filtered.filter(data => data.order_time.includes(searchTerm));
  }
  if (search.num) {
    filtered = filtered.filter(data => data.order_number == search.num);
  }
  if (search.buy) {
    filtered = filtered.filter(data => data.judge == search.buy);
  }
  filteredData.value = filtered;
};

 html部分代码样式:

<!-- 搜索 -->
    <div class="search" v-if="searchCon">
      <div class="search_one">
        <el-select
          v-model="search.status"
          placeholder="请选择订单状态"
          :fit-input-width="true"
          @change="handleStatusChange"
          clearable
        >
          <template #prefix>
            <p>订单状态</p>
          </template>
          <el-option
            v-for="(option, index) in options"
            :key="index"
            :fit-input-width="true"
            :label="option.label"
            :value="option.value"
          />
        </el-select>
      </div>

      <div class="search_one">
        <div class="block">
          <el-date-picker
            v-model="search.dateTime"
            type="month"
            :fit-input-width="true"
            placeholder="下单时间"
            @change="handleStatusChange"
            format="YYYY/MM"
            value-format="YYYY-MM"
            clearable
          />
        </div>
      </div>

      <div class="search_one">
        <el-input
          v-model="search.num"
          @input="handleStatusChange"
          placeholder="请选择订单编号"
        >
          <template #prepend>订单编号</template>
        </el-input>
      </div>

      <div class="search_one">
        <el-input
          v-model="search.name"
          @input="handleStatusChange"
          placeholder="请选择用户"
        >
          <template #prepend>用户姓名</template>
        </el-input>
      </div>

      <div class="search_">
        <el-select
          v-model="search.buy"
          placeholder="请选择购买方式"
          :fit-input-width="true"
          @change="handleStatusChange"
          clearable
        >
          <template #prefix>
            <p>购买方式</p>
          </template>
          <el-option
            v-for="(option, index) in buys"
            :key="index"
            :fit-input-width="true"
            :label="option.label"
            :value="option.value"
          />
        </el-select>
      </div>
    </div>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue实现文件搜索功能,可以分为以下几个步骤: 1. 创建一个表单,包含一个输入框和一个搜索按钮。 ``` <template> <div> <form @submit.prevent="search"> <label for="searchTerm">Search:</label> <input id="searchTerm" v-model="searchTerm" type="text" placeholder="Enter search term"> <button type="submit">Search</button> </form> </div> </template> <script> export default { data() { return { searchTerm: '', }; }, methods: { search() { // TODO: Implement search functionality }, }, }; </script> ``` 2. 定义一个搜索函数,该函数将搜索词作为参数,并通过API或其他方式搜索文件,并将结果存储在一个数组。 ``` export default { data() { return { searchTerm: '', files: [], }; }, methods: { async search() { const response = await fetch(`/api/search?term=${this.searchTerm}`); const data = await response.json(); this.files = data.files; }, }, }; ``` 3. 在模板显示搜索结果。 ``` <template> <div> <form @submit.prevent="search"> <label for="searchTerm">Search:</label> <input id="searchTerm" v-model="searchTerm" type="text" placeholder="Enter search term"> <button type="submit">Search</button> </form> <ul> <li v-for="file in files" :key="file.id"> {{ file.name }} </li> </ul> </div> </template> ``` 在以上代码,我们使用了v-for指令来遍历文件数组,并使用:key属性来指定每个文件的唯一标识符。在模板,我们只显示了文件名,但你可以根据需要显示其他信息。 4. 添加搜索结果的筛选功能。 ``` export default { data() { return { searchTerm: '', files: [], filteredFiles: [], }; }, methods: { async search() { const response = await fetch(`/api/search?term=${this.searchTerm}`); const data = await response.json(); this.files = data.files; this.filteredFiles = data.files; }, filterFiles() { this.filteredFiles = this.files.filter((file) => { return file.name.includes(this.searchTerm); }); }, }, watch: { searchTerm() { this.filterFiles(); }, }, }; ``` 在以上代码,我们添加了一个新的数组filteredFiles,该数组用于存储根据搜索词筛选后的结果。我们还添加了一个filterFiles函数,该函数使用Array.filter方法来筛选文件数组,并将结果存储在filteredFiles数组。 我们还添加了一个watcher来监视searchTerm属性的变化。每当searchTerm变化时,我们调用filterFiles函数来更新filteredFiles数组。 最后,在模板,我们使用filteredFiles数组代替files数组来显示搜索结果。 ``` <template> <div> <form @submit.prevent="search"> <label for="searchTerm">Search:</label> <input id="searchTerm" v-model="searchTerm" type="text" placeholder="Enter search term"> <button type="submit">Search</button> </form> <ul> <li v-for="file in filteredFiles" :key="file.id"> {{ file.name }} </li> </ul> </div> </template> ``` 这样,我们就完成了在Vue实现文件搜索功能的过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值