1.3 Vue组件的核心概念:事件
<script> Vue.component('todo-item', { // 属性声明 props: { title: String, // 直接定义类型,没有默认值 del: { type: Boolean, // 定义类型 default: false // 默认值 }, }, // 绑定对象 data: function() { return {} }, // 方法 methods: { handleClick() { console.log("点击了删除按钮") // 向外抛出事件,以及丢出参数 this.$emit('remove-delete', this.title) } }, // 模板 template: ` <li> <span v-if="!del">{{title}}</span> <span v-else style="text-decoration: line-through;">{{title}}</span> <button v-show="!del" @click.stop=handleClick>删除</button> </li> ` }) Vue.component('todo-list', { template: ` <ul> <todo-item @remove-delete="handleDelete" v-for="item in list" :title="item.title" :del="item.del"></todo-item> </ul> `, data: function() { return { list: [{ title: '课程1', del: false, },{ title: '课程2', del: true, }] } }, methods: { handleDelete(val) { console.log("handleDelete点击了删除", val) } } }) var vm = new Vue({ el: '#app', data: { message: 'hello world' } }) </script>2. 组件中向外抛出时间,可以在方法中使用`this.$emit('接受的监听', 参数)`进行向外抛出(接收的监听事件标识可以自定义) 3. 事件的监听可以禁止向外冒泡等修饰,具体可以查看官方,这里用的`.stop`就是禁止向外冒泡
Last updated