javascript – 使用Vue的多个模态组件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用Vue的多个模态组件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2224字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 使用Vue的多个模态组件](/upload/InfoBanner/zyjiaocheng/751/5f0e311dd81840fbbbcd4558e5eaed66.jpg)
我在Vue中实现动态模态组件时遇到问题.
我显示从db获取的一组数据的常用方法是通过迭代db结果的每一行来转储HTML表元素中的每一行.像这样:
正如您在屏幕截图中看到的,每个行都有一个或多个按钮,这些按钮由循环动态生成.
为了将模态组件绑定到每个按钮(比如这个场景中的Remove按钮),我会做这样的事情.
HTML:
<div id="app">
<?php foreach($result as $x): ?>
<modal v-if="showModal">I am Modal $x</modal>
<btn @trigger="onShowModal">Button $x</btn>
<?php endforeach; ?>
</div>
因此,如果我的结果中有三行,前面提到的代码块将采用以下形式:
<div id="app">
<modal v-if="showModal">I am Modal 1</modal>
<btn @trigger="onShowModal">Button 1</btn>
<modal v-if="showModal">I am Modal 2</modal>
<btn @trigger="onShowModal">Button 2</btn>
<modal v-if="showModal">I am Modal 3</modal>
<btn @trigger="onShowModal">Button 3</btn>
</div>
这是我在JavaScript端做的事情:
JavaScript的:
Vue.component('btn',{
template: `<button @click="$emit('trigger')"><slot></slot></button>`,
});
Vue.component('modal',{
template: `<p><slot></slot></p>`,
});
new Vue({
el: '#app',
data: {
showModal: false
},
methods: {
onShowModal(){
this.showModal = true;
}
}
});
这种方法的问题是,当我单击任何一个删除按钮时,我得到一个模块的“堆栈”而不是我想要查看的模态.这是因为我将showModal设置为true,如果您看到填充的HTML块,您将看到每个模态都设置为v-if =“showModal”.
当我开始理解前端 – 后端关系时,我发现这种模式在应用程序中更频繁地出现.如何解决此问题(具有非常适合初学者的级别)?
解决方法:
根本问题是您在所有模态组件上引用相同的数据属性showModal.
您可以创建另一个组件来封装按钮和模态组件对.这样,每个模态和btn对都有一个单独的showModal数据属性:
Vue.component('btn',{
template: `<button @click="$emit('trigger')"><slot></slot></button>`,
});
Vue.component('modal',{
template: `<p><slot></slot></p>`,
});
Vue.component('modal-btn', {
template: `
<div>
<modal v-if="showModal">
<slot>I am a modal</slot>
</modal>
<btn @trigger="showModal = true">Show Modal</btn>
</div>
`,
data() {
return { showModal: false }
}
});
new Vue({
el: '#app',
data: {
showModal: false
},
methods: {
onShowModal(){
this.showModal = true;
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.2/vue.min.js"></script>
<div id="app">
<modal-btn></modal-btn>
<modal-btn>I am another modal</modal-btn>
<modal-btn>I'm a third modal</modal-btn>
</div>
内容总结
以上是互联网集市为您收集整理的javascript – 使用Vue的多个模态组件全部内容,希望文章能够帮你解决javascript – 使用Vue的多个模态组件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。