如何使用 vue 绑定引导模式数据
Posted
技术标签:
【中文标题】如何使用 vue 绑定引导模式数据【英文标题】:How can I bind boostrap modal data by using vue 【发布时间】:2018-12-02 22:27:07 【问题描述】:为了显示引导模式,我们可以使用 data-toggle 属性。例如:
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#msg">Open Modal</button>
我想通过使用 vue bool 变量数据来显示模态。这是我的组件:
Vue.component('modal',
delimiters: ['[[', ']]'],
props:
id: String,
hidden: Boolean
,
data: function ()
return
,
computed:
getStyle: function()
if(this.hidden)
return "display: hidden;"
return "display: block;"
,
methods:
,
template: `
<div class="modal fade" v-bind:class="show: !hidden" role="dialog" :style="getStyle" :id="id">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<slot name="header"></slot>
</div>
<div class="modal-body">
<slot></slot>
</div>
</div>
</div>
</div>
`
)
比在 html 中我有:
<div id="msg_modal">
<modal :id="'msg'" :hidden='isHidden'>
message
</modal>
</div>
在脚本中:
<script>
var msg_modal = new Vue(
el: '#msg_modal',
data:
isHidden: false
)
</script>
之后,我的模式可见,但行为与单击“打开模式”按钮不同。例如,我无法通过单击模态边界来关闭模态。
提前感谢您的帮助。
编辑: 我通过使用 jquery 临时修复了这个问题
computed:
id_selector: function()
return "#"+this.id;
,
methods:
show: function()
this.modal('show');
,
hide: function()
this.modal('hide');
,
toggle: function()
this.modal('toggle');
,
modal: function(action)
$(this.id_selector).modal(action);
,
有没有人知道没有 jquery 的解决方案?
【问题讨论】:
【参考方案1】:另一种方法是以编程方式打开/关闭模式(但您需要使用 jquery):
Vue.component('modal',
props: ['id'],
template: `
<div class="modal fade" role="dialog" :id="id">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<slot name="header"></slot>
</div>
<div class="modal-body">
<slot></slot>
</div>
</div>
</div>
</div>
`
)
new Vue(
el: '#msg_modal',
data:
message: 'Modal content'
,
methods:
showModal()
let element = document.getElementById('msg')
$(element).modal('show')
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<div id="msg_modal">
<modal :id="'msg'">
<template slot="header">Header</template>
message
</modal>
<button class="btn btn-info btn-lg" @click="showModal">Open Modal</button>
</div>
【讨论】:
以上是关于如何使用 vue 绑定引导模式数据的主要内容,如果未能解决你的问题,请参考以下文章