1、创建组件 demo.vue,内容如下:
<template> <div> <input type="button" :value="name" @click="btnClickHandler" /> </div> </template> <script> export default { data () { return {} }, props: ['name'], methods: { btnClickHandler: function () { // this.$emit('btnClick') 用于执行父组件中绑定的事件 this.$emit('btnClick') // 还可以执行单独的组件自己的方法 alert('子组件的点击') } } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped lang='scss'> </style>
ps.
a.data最好写返回值,即使是空对象,否则调试时,可以运行,但浏览器会报错,一片红看的不难受么
b.props用于参数的传递
c.自定义事件,并将自定义事件绑定到button的单击事件中,自定义事件添加代码:this.$emit('btnClick'),此段代码的作用是:在父组件使用绑定自定义事件时,执行父组件中绑定的事件
2、使用<template>
>
<sw-header name="abc" @btnClick="click"></sw-header>
<router-view />
</div>
</template>
<script>
import swHeader from './components/demo'
export default {
name: 'App',
components: {
swHeader
},
methods: {
click: function () {
alert('父组件的点击事件')
}
}
}
</script>
<style lang="scss">
/*去除浏览器默认样式*/
@import './assets/reset.css';
/*sass变量*/
$background: #ccc;
</style>
ps.
a.引用组件
b.注册组件
c.参数传递:按照html的普通属性使用即可将参数传递给组件
d.定义事件,并绑定到组件的自定义事件中