为什么每次点击都是删除最后一个,而不是删除点击的那个li

来源:3-4 实现todolist的删除功能

qq_莫莫_14

2018-07-13 11:57

<div id="root">
    <!--模板-->
    <input v-model="inputValue" type="text" autofocus=true />
    <button @click="handleSubmit">提交</button>
    <ul>
        <!--子组件-->
       <todo-item v-for="(item,index) of list"
                  :key="index"
                  :content="item"
                  :index="index"
                  @delete="handleDelete"
               >
       </todo-item>
    </ul>
</div>
<script>
//    每一个组件都是一个实例
//    Vue.component注册或获取全局组件
    Vue.component('todo-item',{
//        props 可以是数组或对象,用于接收来自父组件的数据
        props:['content','index'],
        template:'<li @click="handleClick">{{content}}{{index}}</li>',
        methods:{
            handleClick:function(){
//                $emit触发当前实例上的事件。附加参数都会传给监听器回调。
                this.$emit('delete',this.index)
            }
        }
    })
//    var TodoItem={
//        template:'<li>item</li>'
//    }
//实例
    new Vue({
//        挂载点
        el:"#root",
        data:{
            inputValue:"",
            list:[]
        },
        methods:{
            handleSubmit:function(){
                this.list.push(this.inputValue)
                this.inputValue=""
            },
            handleDelete:function(index){
                this.list.splice(index,1)
            }
        }
    })
</script>


写回答 关注

4回答

  • Anmaster
    2018-07-14 04:47:59
    已采纳

    你的代码没错,你是被误导了。

    他绑定的list值每次修改都会重新赋值给todo-item。你输入一些数据再添加看看就会发现。

    不要直接点添加,你直接点之后他只显示index,但是你删除一个元素后,他的index又重新赋值,所以你看起来像是删除了最后一项。

    qq_持晨_...

    请我最后是怎么解决的,我也出现了同样的问题,控制台打印的数据是正常的,显示的就不正常了,不管删数组哪个位置的,显示的都是删除最后一个的元素

    2018-09-14 14:01:04

    共 2 条回复 >

  • qq_慕标5334046
    2019-09-14 19:23:46

    我今天看了上面的回答,表示没看懂,我相信很多人也是这样,但我找到了解决办法。

    把template:'<li @click="handleClick">{{content}}{{index}}</li>'中的赋值方式改成v-text赋值。
    即template:'<li v-text="content" @click="handleClick"></li>'

    问题就解决了。    

    要更深入了解可以百度一下,这两种赋值方式的不同。

  • 小地瓜啊
    2018-08-02 14:43:08

    我和你的问题一样,并不能点击哪个删哪个,最佳回答没看懂,就算是index重新赋值了,我想删除第一项,也是最后一项被删除啊,好懵,请问有人懂吗

    慕虎2052...

    你解决了么,我也遇到这个问题了

    2019-05-21 15:41:32

    共 3 条回复 >

  • 526952051
    2018-07-13 14:55:50

    我试了 没问题啊

vue2.5入门

快速理解Vue编程理念上手Vue2.0开发。

146820 学习 · 657 问题

查看课程

相似问题