我有一个与Laravel
应用程序配合使用的Vue
组件:resources/assets/js/app.js
:
Vue.component('auth-form', require('./components/AuthForm.vue'));
const app = new Vue({
el: '#app',
data: {
showModal: false
}
});
AuthForm.vue
:
<template>
<div v-if="showModal">
<transition name="modal">
<div class="modal-mask">
<div class="modal-wrapper">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" @click="showModal=false">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
modal body
</div>
</div>
</div>
</div>
</div>
</transition>
</div>
</template>
<script>
export default {
name: "auth-form"
}
</script>
<style scoped>
...
</style>
我正在使用blade
模板内的组件:
<div id="app">
...
<button id="show-modal" @click="showModal = true">Auth</button>
...
<auth-form></auth-form>
</div>
我得到了错误
属性或方法“showModal”未在示例上定义,但在呈现过程中引用。
我的零件有什么问题?
我用这个JSFiddle作为例子。
2条答案
按热度按时间cclgggtu1#
原因是您已经在根组件中定义了showModel,而AuthForm是它的子组件。
将AuthForm.vue中的脚本更改为:
或者您可以编写一个计算方法来从父组件获取值。
编辑:
ahh ok我看到你需要什么.你将需要到使用属性代替
叶片样板
AuthForm.vue中的脚本
gcuhipw92#
showModal
是父Vue中的数据项,而不是组件中的数据项。由于您希望它们是相同的东西,因此您应该将showModal
作为prop传递给子组件。子组件中的单击应该发出父组件处理的事件(通过更改值)。