我正在VueJs中构建一个组件,如果条件为真,则需要打开模式并从控制器获取数据并以模式显示。
我看过网上,但是在使用axios
接收数据后找不到动态内容的设置。
这是我的ModalComponent.vue
<template>
<div class="modal fade show" id="myModal" style="display: block;">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title"><slot name="modal-header"></slot></h4>
<button type="button" class="close" @click="$emit('close')" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true" >×</span>
</button>
</div>
<div class="modal-body">
<slot name="modal-text"></slot>
</div>
<div class="modal-footer">
<slot name="modal-footer"></slot>
<button type="button" class="btn btn-danger" @click="$emit('close')" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "ModalComponent"
}
</script>
在其他组件ExampleComponent中,我可以使用这样的按钮显示模式
<button @click="showModal = true">Show Modal</button>
<modal-component v-if="showModal" @close="showModal = false">
<template slot="modal-header"> Testing something </template>
<template slot="modal-text"> Modal Body will go here </template>
<template slot="modal-footer"><button class="btn btn-primary">Save Changes</button></template>
</modal-component>
但是如果某些条件为真,我想自动打开此模式,请从控制器获取数据并显示。
我在ExampleComponent中有一个方法,该方法从控制器接收数据,但是如何将这些数据设置到modal-text
插槽中并打开模式。
谢谢
答案 0 :(得分:4)
添加
<template slot="modal-text"> {{ modalText }} </template>
代替
<template slot="modal-header"> Testing something </template>
然后添加
data () {
return {
showModal: false,
modalText: ''
}
},
methods: {
showModalFn: function (showModalData) {
// your code
// ...
this.showModal = true
this.modalText = 'Whatever you want to show'
}
}
答案 1 :(得分:1)
按照下面的codepen所示的创建方法,编写数据获取代码(例如下面的示例):
function getServerData (url, urlParams ){
if ( typeof url_params == "undefined" ) { urlParams = getUrlParams() }
return axios.get(url , { params: urlParams } )
.then(response => {
return response ;
})
.catch(function(error) {
console.error ( error )
return error.response;
})
}