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

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

<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 回答

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

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

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

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

qq_莫莫_14 提问者

非常感谢!
2018-07-16 回复 有任何疑惑可以回复我~
#2

qq_持晨_0

请我最后是怎么解决的,我也出现了同样的问题,控制台打印的数据是正常的,显示的就不正常了,不管删数组哪个位置的,显示的都是删除最后一个的元素
2018-09-14 回复 有任何疑惑可以回复我~

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

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

问题就解决了。    

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

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

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

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

你骂我我吃亏你就是个小乌龟

你把子组件中template:'<li @click="handleClick">{{content}}{{index}}</li>',中的{{index}}删除掉,写成template:'<li @click="handleClick">{{content}}</li>', 你添加不同的项你再删除试一下,你注重看一下内容,不要看后面显示的{{index}}的索引值
2018-11-14 回复 有任何疑惑可以回复我~
#2

好好学习天天向上喽

不要看后面index的值,它是更新的 你看你删除的内容,看看内容有没有被删除,内容删除了就是对的
2018-11-29 回复 有任何疑惑可以回复我~
#3

慕虎2052545

你解决了么,我也遇到这个问题了
2019-05-21 回复 有任何疑惑可以回复我~

我试了 没问题啊

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

举报

0/150
提交
取消

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

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