为了账号安全,请及时绑定邮箱和手机立即绑定

todolist删除没反应也没报错,求大家帮忙看看

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue中组件与实例的关系</title>
    <script src="./vue.js"></script>
</head>
<body>
<div id="root">
    <div>
        <input v-model="inputValue" />
        <button @click="handleSubmit">提交</button>
    </div>
    <ul>
        <todo-item v-for="(item,index) of list"
 :key="index"
 :content="item"
 :index="index"
 @click="handleDelete"
 >
        </todo-item>
    </ul>

</div>

<script>
 //全局组件 (vue中组件与实例的关系:vue的每一个组件都是vue的实例);
 Vue.component('todo-item',{
        props:['content','index'],//从副组件中接收content数据和index下标
 template:'<li>{{content}} {{index}}</li>',
 methods:{
            handleClick:function(){
               this.$emit('delete',this.index)
            },
 }
    });
 new Vue({
        el:"#root",
 data:{
            inputValue:'',
 list:[]
        },
 methods:{
            handleSubmit:function () {
                this.list.push(this.inputValue)
                this.inputValue = ''
 },
 handleDelete:function () {
                alert(11);
 }
        }

    });
</script>
</body>
</html>


正在回答

7 回答

template:'<li>{{content}} {{index}}</li>',

在这里,你没有绑定事件

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5f12d7dc0001f1af06570261.jpg

这个地方少了监听事件 正确应该为 

<li @click="handleClick()">{{content}} {{index}}</li>


0 回复 有任何疑惑可以回复我~
  1. <todo-item>中应该是@delete而不是click

  2. template中的li没有增加点击事件@click="handleClick"

    增加以上两个,点击后会弹出对应的内容

  3. 如果需要删除:

    handleDelete: function (index) {

           this.list.splice(index,1)

    }


1 回复 有任何疑惑可以回复我~

自组件中,没有@click触发你的handleClick方法


0 回复 有任何疑惑可以回复我~

除了@delete, handledelete方法写的也不对啊 handleDelete:function (index) {
                this.list.spilice(index,1);
 }

0 回复 有任何疑惑可以回复我~

一样的,不过还是谢谢啦

0 回复 有任何疑惑可以回复我~
#1

言丶叶

不一样的,父组件要监听子组件对外发布的delete事件,你写成click就不对了。你要监听的是子组件的click事件,不是父组件。
2019-10-31 回复 有任何疑惑可以回复我~

父组件监听delete方法的那个你写的@click应该不对吧,不是应该是@delete吗?

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

todolist删除没反应也没报错,求大家帮忙看看

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信