首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Live Search组件

Live Search组件
EN

Stack Overflow用户
提问于 2021-02-24 21:11:42
回答 1查看 63关注 0票数 2

我正在从外部API链接获取我的数据,我想过滤它们-实时搜索,所以当我键入一个字母时,包括该字母的结果将被过滤。

现在我不能这样做,当我点击我的输入时,我只是打印出所有的结果,当我试图过滤它们时,什么也没有发生。

这是我在脚本中的逻辑:

代码语言:javascript
运行
复制
data() {
    return {
      result: "",
      modal: false,
      results: [],
      filteredResults: [],
    };
  },
  mounted() {
    axios
      .get("secretDataURL")
      .then((response) => {
        this.filteredResults = response.data;
      })
      .catch((error) => (this.filteredResults = console.log(error)))
      .finally(() => console.log("Data successfully loaded"));
  },
  methods: {
    filterResults() {
      if (this.result.lenght == 0) {
        this.filteredResults = this.results;
      }
      this.filteredResults = this.results.filter((result) => {
        return result.toLowerCase().startsWith(this.result.toLowerCase());
      });
    },
    setResult(result) {
      this.result = result;
      this.modal = false;
    },
  },
  watch: {
    state() {
      this.filterResults();
    },
  }

和我的模板

代码语言:javascript
运行
复制
<div @click="modal = false"></div>
    <input
      type="text"
      v-model="result"
      autocomplete="off"
      @input="filterResults"
      @focus="modal = true"
    />
    <div v-if="filteredResults && modal">
      <ul>
        <li
          v-for="(filteredResult, index) in filteredResults"
          :key="index"
          @click="setResult(filteredResult)"
        >
          {{ filteredResult.name }}
        </li>
      </ul>
    </div>

在我的逻辑失败的地方,我该如何让它工作呢?

EN

回答 1

Stack Overflow用户

发布于 2021-02-24 21:39:42

你在钩子mounted中获取数据。然后就失去了它。

this.filteredResults = response.data;更改为this.results = response.data;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66351622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档