Чтобы показать модальность начальной загрузки, мы можем использовать атрибут 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>
После этого мой модальный виден, но поведение отличается от нажатия на кнопку «Открыть модальный». Например, я не могу закрыть модальные, щелкая из модальных границ.
Заранее спасибо за помощь.
EDIT:
Я временно исправил это с помощью 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?