javascript - VueJS |根据选定的复选框或在输入字段中输入文本来过滤 API 数据

标签 javascript vuejs2

我目前正在尝试根据选定的复选框或在输入字段中输入的值来创建过滤器。

部分代码可以正常工作,但并非所有功能都可以正常工作。

要求:

  • 根据输入值过滤内容
  • 根据选定的一个/多个复选框过滤内容

这是 JSFiddle:https://jsfiddle.net/Ksistof/01x839z2/3/

HTML/VUE

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js" 
integrity="sha256-Gs0UYwrz/B58FsQggzU+vvCSyG/pewemP4Lssjzv8Ho=" 
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.3.4/vue-
resource.min.js" integrity="sha256-
OZ+Xidb5+lV/saUzcfonHJQ3koQncPy0hLjT8dROdOU=" crossorigin="anonymous">
</script>

<div id="app">
 <h2>Fetched data from jsonplaceholder</h2>
 Search by title: <input type="text" v-model="search">
 <br><br>

<lable>sunt</lable><input type="checkbox" v-model="search" value="sunt">
<lable>esse</lable><input type="checkbox" v-model="search" value="esse">

 <ul>
  <li v-for="apiRequest in filteredBlogs">
   <h4>{{ apiRequest.title }}</h4>
   <p>{{ apiRequest.body }}</p>
  </li>
 </ul>
</div>

JS

Vue.use(VueResource)

var app = new Vue({
el: '#app',

data() {
return {
  apiRequests:[],
  search: []
 }
},

// Filter for Displaying blogs
computed: {
 filteredBlogs: function() {
  return this.apiRequests.filter((apiRequest) => {
    return apiRequest.title.match(this.search);
  })
 }
},

// Getting data from API
created() {

 this.$http.get('https://jsonplaceholder.typicode.com/posts')
  .then(function(data) 
 {
  this.apiRequests = data.body.slice(0,5);
  console.log(data);
 })
}

})

提前谢谢您!

最佳答案

我认为更好的解决方案是将搜索对象拆分为从文本框和复选框数组中查询字符串并计算它们。

看看这个:https://jsfiddle.net/w7tuqvbr/

如果您想使用逻辑运算符“OR”而不是“AND”更改此函数:

.every(x => apiRequest.title.indexOf(x) > -1);

.some(...)

关于javascript - VueJS |根据选定的复选框或在输入字段中输入文本来过滤 API 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46896834/

相关文章:

vue.js - 在 vuejs 中打开/关闭模式时如何在 body 标签上添加/删除类

javascript - 如何使用逗号JS从数组中输出数据列表?

javascript - Chrome 中的 V8 原生语法

javascript - jquery href 和 onclick 分离

javascript - vue 如何监听子列表变化或者v-model

javascript - Vue.js2 渲染空数组

javascript - 如何让类别字段变小

javascript - 清除不需要的 <span> 标签

javascript - Nuxt/Vue.js - 基于 Prop 动态加载子组件

javascript - Vue 的整页滚动?