Bootstrap-Vue Modal 隐藏方法不起作用
Bootsrap-Vue Modal hide method not working
我有一个简单的 bootstrap-vue modal
和一个 input text
。我希望按下 Ok
按钮不会自动关闭,所以我使用“阻止”。然后我做了一些验证,然后我希望它用“隐藏”方法关闭。但是它对我不起作用。奇怪的是 show 方法确实工作得很好。我查看了文档,但找不到错误所在。那时我如何使隐藏方法对我有用?
有我的代码。
<template>
<div>
<b-button
size="sm"
class="m-2"
variant="primary"
@click="grfGuardarBtnPredefAccions()"
>Guardar gráfica personalizada</b-button
>
<b-modal
id="grfModalGuardar"
ref="grfGuardarModal"
title="Insertar nombre"
@ok.prevent="grfModalOk"
@cancel="grfModalCancel"
>
<p>
Debe asignar un nombre a la gráfica personalizada que desea guardar.
</p>
<b-form-input
v-model="grfModalPersoName"
placeholder="Escriba aquí ..."
></b-form-input>
</b-modal>
</div>
</template>
<script>
export default {
name: "GrafTopMenu",
components: {
GrafEditor,
},
data() {
return {
// almacena el nombre que el usuario le pone a la gráfica personalizada que va a guardar.
grfModalPersoName: "",
};
},
computed: {},
methods: {
/** acciónes que realiza el botón de guardar gráfica personalizada*/
grfGuardarBtnPredefAccions() {
let errormsg = "";
if (this.grfTableGrafica.tableConf.items.length == 0) {
errormsg += errormsg + "No puede guardar una gráfica vacía";
}
if (!errormsg) {
this.$refs.grfGuardarModal.show();
} else {
generalUtils.makeToast(
"danger",
3000,
"No puede guardar una gráfica vacía"
);
}
},
grfModalOk() {
if (!this.grfModalPersoName.trim()) {
generalUtils.makeToast(
"danger",
3000,
"El nombre no puede estar vacío"
);
} else {
console.log("ok");
console.log("this.grfModalPersoName :>> ", this.grfModalPersoName);
console.log("this.grfTableGrafica", this.grfTableGrafica);
this.$refs["grfGuardarModal"].hide();
// this.$refs.grfGuardarModal.hide();
}
},
grfModalCancel() {
this.grfModalPersoName = "";
},
},
};
</script>
<style>
</style>
我试过的语法:
this.$refs.grfGuardarModal.hide();
this.$refs['grfGuardarModal'].hide();
this.$bvModal.hide('grfGuardarModal');
编辑:你用过 v-model 吗?将数据传递给 v-model 并随时更新它
你还有一个选择。
<b-modal id="bv-modal-example" hide-footer></b-modal>
//in script tag
this.$bvModal.hide('bv-modal-example')
或者,您可以为 bootstrap vue 模态框使用 v-model 属性。
请检查documentation。
问题是您试图在阻止它关闭的同时关闭它。
您可以通过使用 this.$nextTick
将隐藏方法延迟到下一个 tick 来解决这个问题。
this.$nextTick(() => {
this.$bvModal.hide('grfGuardarModal')
})
我有一个简单的 bootstrap-vue modal
和一个 input text
。我希望按下 Ok
按钮不会自动关闭,所以我使用“阻止”。然后我做了一些验证,然后我希望它用“隐藏”方法关闭。但是它对我不起作用。奇怪的是 show 方法确实工作得很好。我查看了文档,但找不到错误所在。那时我如何使隐藏方法对我有用?
有我的代码。
<template>
<div>
<b-button
size="sm"
class="m-2"
variant="primary"
@click="grfGuardarBtnPredefAccions()"
>Guardar gráfica personalizada</b-button
>
<b-modal
id="grfModalGuardar"
ref="grfGuardarModal"
title="Insertar nombre"
@ok.prevent="grfModalOk"
@cancel="grfModalCancel"
>
<p>
Debe asignar un nombre a la gráfica personalizada que desea guardar.
</p>
<b-form-input
v-model="grfModalPersoName"
placeholder="Escriba aquí ..."
></b-form-input>
</b-modal>
</div>
</template>
<script>
export default {
name: "GrafTopMenu",
components: {
GrafEditor,
},
data() {
return {
// almacena el nombre que el usuario le pone a la gráfica personalizada que va a guardar.
grfModalPersoName: "",
};
},
computed: {},
methods: {
/** acciónes que realiza el botón de guardar gráfica personalizada*/
grfGuardarBtnPredefAccions() {
let errormsg = "";
if (this.grfTableGrafica.tableConf.items.length == 0) {
errormsg += errormsg + "No puede guardar una gráfica vacía";
}
if (!errormsg) {
this.$refs.grfGuardarModal.show();
} else {
generalUtils.makeToast(
"danger",
3000,
"No puede guardar una gráfica vacía"
);
}
},
grfModalOk() {
if (!this.grfModalPersoName.trim()) {
generalUtils.makeToast(
"danger",
3000,
"El nombre no puede estar vacío"
);
} else {
console.log("ok");
console.log("this.grfModalPersoName :>> ", this.grfModalPersoName);
console.log("this.grfTableGrafica", this.grfTableGrafica);
this.$refs["grfGuardarModal"].hide();
// this.$refs.grfGuardarModal.hide();
}
},
grfModalCancel() {
this.grfModalPersoName = "";
},
},
};
</script>
<style>
</style>
我试过的语法:
this.$refs.grfGuardarModal.hide();
this.$refs['grfGuardarModal'].hide();
this.$bvModal.hide('grfGuardarModal');
编辑:你用过 v-model 吗?将数据传递给 v-model 并随时更新它
你还有一个选择。
<b-modal id="bv-modal-example" hide-footer></b-modal>
//in script tag
this.$bvModal.hide('bv-modal-example')
或者,您可以为 bootstrap vue 模态框使用 v-model 属性。
请检查documentation。
问题是您试图在阻止它关闭的同时关闭它。
您可以通过使用 this.$nextTick
将隐藏方法延迟到下一个 tick 来解决这个问题。
this.$nextTick(() => {
this.$bvModal.hide('grfGuardarModal')
})