<body> <div id = "app"> <input type="text" v-model="inputValue"/> <button v-on:click="handleBtnClick">提交</button> <ul> <!-- <li v-for="item in list">{{item}}</li>--> <todo-item v-bind:content="item" v-bind:index="index" v-for="(item,index) in list" @delete = "handleItemDelete"><!--监听事件--> </todo-item> </ul> </div> <script> /*Vue.component("TodoItem",{//全局组件 props:["content"], template :"<li>{{content}}</li>" })*/ var TodoItem = { //局部组件,需要在实例中声明 props:["content","index"], template :"<li @click='handleItemClick'>{{content}}</li>", methods:{ handleItemClick:function () { this.$emit("delete",this.index);//触发事件 } } } var app =new Vue({//创建实例 el:"#app",//实例负责管理的dom区域 components:{ //子组件声明 TodoItem: TodoItem, }, data:{ list: [], inputValue: "" }, methods:{ handleBtnClick:function () { this.list.push(this.inputValue); this.inputValue=""; }, handleItemDelete:function (index) { this.list.splice(index,1); } } }) </script> </body>