ajax - 如何使用特定事件的 ajax 数据重新创建 vuejs 组合
问题描述
我是 vuejs 的新手。我想根据另一个选择重新加载组件项。示例:我想根据用户选择的标签/类别重新加载帖子列表。我该怎么做?我需要在哪里进行新的 ajax 调用?此外,ajax 调用与标签和类别不同。我认为created
在页面加载时加载的简单组件之类的方法中添加 ajax 调用将无济于事。这个怎么做?谢谢
<template>
<div>
<div class="pt-2 pb-3">
<input type="hidden" name="my_variable" v-model="myVar" @change="foo">
</div>
</div>
</template>
<script>
export default {
data() {
return {
myVar: null,
};
},
methods: {
submit: function(e) {},
async foo() {
console.log('foo', this.myVar);
}
}
};
</script>
解决方案
这取决于。如果您在组件的实例化中有标签/类别,那么是的,您可以在created
生命周期中进行调用。
export default {
data: () => ({
options: []
}),
methods: {
async getOptions(){
const response = await axios.get('/items');
this.options = response.data
}
}
}
如果您在创建组件时没有标签并且需要在用户选择类别时进行更改,您可以在用户更改选项时进行 ajax 调用:
<template>
<select v-model="optionSelected" @change="getOptions">
<option value="1">First Value</option>
<option value="2">Second Value</option>
</select>
</template>
<script>
export default {
data: () => ({
optionSelected: null,
options: [],
}),
methods: {
async getOptions(item) {
const response = await axios.get('/items', { params: { filter: item } });
this.options = response.data;
}
}
}
</script>
OP更新问题后编辑
当您有一个input
时,每次用户输入内容时,浏览器都会发出一个名为input
. 当你有一个select
元素时,浏览器会发出一个名为change
. 在这种情况下,由于您使用的是input
我们应该使用@input
而不是@change
<input type="hidden" name="my_variable" v-model="myVar" @input="foo">
你可以在这里阅读更多关于它的信息
除此之外,当您监听input
事件时,函数的第一个参数将是传递的值:
async foo(value) {
console.log(value, this.myVar);
}
推荐阅读
- angular - 组件 MenuComponent 不是任何 NgModule 的一部分,或者该模块尚未导入您的模块
- python - 何时调用精确修补的类方法?
- jasper-reports - 如何强制页脚仅打印碧玉报告中的第一页并且不占用下一页的任何空间
- python - 可以为 PyLint 的不可检测模块创建“存根”文件吗?
- elasticsearch - 维基百科转储中的模式搜索
- java - 等待异步回调完成并传递值
- iot - 在 Fiware Orion 上创建两个相同的实体
- sql-server - 如何获取特定数据分组的随机样本
- spring - 索引期间如何在spring data elasticsearch中指定路由键。?
- java - 在 Jenkins 日志之外记录 Jenkins 操作