【发布时间】:2020-01-08 22:43:01
【问题描述】:
我目前有以下组件,我想做的是我想将 api 中的数据加载到我的模态中。数据按预期加载,但模式仅在第二次单击时打开。第一次单击没有打开模式。但是,当模式打开然后我关闭它时。一切再次打开。但是当我刷新它并没有打开。
<template>
<div>
<tbody v-for="(value, key) in users" :key="key.id">
<tr>
<td>{{ value.type }}</td>
</tr>
<tr v-for="user in value.user" :key="user.id">
<td class='text-center'>
<button class="btn btn-default" @click="edit(user.id)" data-toggle="modal" data-target="#modalEdit">
<i class="far fa-edit"></i> Edit
</button>
</td>
</tr>
</tbody>
<edit-modal
v-if="showEdit"
:info="info"/>
</div>
</template>
<script>
import EditModal from './EditModal.vue';
export default {
components: {
EditModal
},
data() {
return {
showEdit: false,
users: [],
info: {
name: '',
status: '',
}
}
},
methods: {
edit(userId) {
axios.get(`user/${userId}`)
.then(response => {
this.info = response.data
this.showEdit = true
}).catch(error => {
console.log(error)
})
}
}
}
</script>
<template>
<div>
<div class="modal fade" id="modalEdit">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header bg-primary">
<h6 class="modal-title text-white font-weight-bold">Edit</h6>
<div class="cursor-pointer" data-dismiss="modal" title="Close">
<i class="fas fa-times text-white"></i>
</div>
</div>
<div class="modal-body">
<div class="form-group row">
<label class="col-sm-4">User</label>
<div class="col-md-8">{{ info.name }}</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
info: {
type: Object,
default: () => ({
name: '',
status: '',
})
}
}
}
</script>
奇怪的是,如果我在edit方法中去掉axios请求
methods: {
edit(userId) {
this.showEdit = true
}
}
模式从第一次点击开始。但是我需要 axios 请求来填充模态中的数据。
【问题讨论】:
-
这里有同样的问题。你有解决方案吗?
-
@JonL 是的,所有发生的事情是按钮应该在文本输入之间具有固定的高度。需要在按钮之间添加一个高度并指定一个固定的高度,这样按钮在点击时不会改变位置。
标签: twitter-bootstrap vue.js vuejs2 bootstrap-4 bootstrap-modal