这是完整的解决方案,除了 Vue,我还使用 axios 来处理 API 请求,并使用 loadash 来获得 vanilla js 本身不提供的额外功能。如果您使用的是 Laravel Mix,那么您已经拥有了所有这些使用 CDN 导入的其他内容
<script src="https://unpkg.com/vue@2.0.3/dist/vue.js"></script>
<script src="https://unpkg.com/axios@0.12.0/dist/axios.min.js"></script>
<script src="https://unpkg.com/lodash@4.13.1/lodash.min.js"></script>
在查看页面中
<select v-model="select1" >
<option >1</option>
<option >2</option>
</select>
<select v-model="select2" >
<option >1</option>
<option >2</option>
</select>
<input type="text" v-model="textbox">
现在是主要脚本部分
<script>
var app = new Vue({
el: '#app',
data: {
select1: '',
select2: '',
textbox: '',
},
watch: {
textbox: function() {
if (this.textbox.length >= 3) {
this.findResults();
}
}
},
methods: {
findResults: _.debounce(function() {
self = this;
axios.post('your laravel post url',{
select1 : self.select1,
select2 : self.select2,
textbox : self.textbox,
})
.then(function (response) {
console.log(response.data);
})
.catch(function (error) {
console.log(error);
})
}, 500)
}
})
</script>
我不包括服务器端部分,您只需返回查询对象而不转换为 JSON。
注意,我使用 watch 来防止在用户至少输入一些字母之前调用 findResult 函数。
loadash debounce函数用于延迟API请求500秒,防止频繁请求。
我假设您知道如何使用 v-for 指令输出返回查询对象。如果你不知道下面的评论。