具有动态内容的vuejs中的方法的开放模式

时间:2018-10-10 04:48:07

标签: javascript vue.js

我正在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插槽中并打开模式。

谢谢

2 个答案:

答案 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;
  })
}