vue ant-design中根据仓库id显示列表数据,类似watch的用法
时间: 2023-12-26 21:06:40 浏览: 89
可以使用Vue的`watch`属性监听仓库id的变化,然后在回调函数中发送请求获取对应仓库的数据,再将数据更新到组件的data属性中,从而实现显示列表数据的功能。
具体实现步骤如下:
1. 在组件的data属性中定义一个空数组`repoList`,用于存储获取的仓库列表数据。
2. 在`watch`属性中监听仓库id的变化,当仓库id发生变化时,执行回调函数。
```javascript
watch: {
repoId: {
immediate: true, // 组件初始化时立即执行回调函数
handler: function(newVal, oldVal) {
// 发送请求获取对应仓库的数据
axios.get(`/api/repo/${newVal}/list`)
.then(res => {
this.repoList = res.data; // 将数据更新到组件的data属性中
})
.catch(err => {
console.log(err);
});
}
}
}
```
上面的代码中,我们使用了`axios`库发送异步请求,获取对应仓库的数据,并将数据更新到组件的data属性中。
3. 在组件的template中使用`v-for`指令渲染仓库列表数据。
```html
<template>
<div>
<ul>
<li v-for="repo in repoList" :key="repo.id">{{ repo.name }}</li>
</ul>
</div>
</template>
```
上面的代码中,我们使用了`v-for`指令渲染仓库列表数据,其中`repoList`是在data属性中定义的数组,用于存储获取到的仓库列表数据。
完整代码示例:
```html
<template>
<div>
<ul>
<li v-for="repo in repoList" :key="repo.id">{{ repo.name }}</li>
</ul>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
repoId: null,
repoList: []
}
},
watch: {
repoId: {
immediate: true,
handler: function(newVal, oldVal) {
axios.get(`/api/repo/${newVal}/list`)
.then(res => {
this.repoList = res.data;
})
.catch(err => {
console.log(err);
});
}
}
}
}
</script>
```
阅读全文