<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>
//????每一個(gè)組件都是一個(gè)實(shí)例
//????Vue.component注冊(cè)或獲取全局組件
????Vue.component('todo-item',{
//????????props?可以是數(shù)組或?qū)ο?,用于接收?lái)自父組件的數(shù)據(jù)
????????props:['content','index'],
????????template:'<li?@click="handleClick">{{content}}{{index}}</li>',
????????methods:{
????????????handleClick:function(){
//????????????????$emit觸發(fā)當(dāng)前實(shí)例上的事件。附加參數(shù)都會(huì)傳給監(jiān)聽(tīng)器回調(diào)。
????????????????this.$emit('delete',this.index)
????????????}
????????}
????})
//????var?TodoItem={
//????????template:'<li>item</li>'
//????}
//實(shí)例
????new?Vue({
//????????掛載點(diǎn)
????????el:"#root",
????????data:{
????????????inputValue:"",
????????????list:[]
????????},
????????methods:{
????????????handleSubmit:function(){
????????????????this.list.push(this.inputValue)
????????????????this.inputValue=""
????????????},
????????????handleDelete:function(index){
????????????????this.list.splice(index,1)
????????????}
????????}
????})
</script>
2018-07-14
你的代碼沒(méi)錯(cuò),你是被誤導(dǎo)了。
他綁定的list值每次修改都會(huì)重新賦值給todo-item。你輸入一些數(shù)據(jù)再添加看看就會(huì)發(fā)現(xiàn)。
不要直接點(diǎn)添加,你直接點(diǎn)之后他只顯示index,但是你刪除一個(gè)元素后,他的index又重新賦值,所以你看起來(lái)像是刪除了最后一項(xiàng)。
2019-09-14
我今天看了上面的回答,表示沒(méi)看懂,我相信很多人也是這樣,但我找到了解決辦法。
問(wèn)題就解決了。? ??
要更深入了解可以百度一下,這兩種賦值方式的不同。
2018-08-02
我和你的問(wèn)題一樣,并不能點(diǎn)擊哪個(gè)刪哪個(gè),最佳回答沒(méi)看懂,就算是index重新賦值了,我想刪除第一項(xiàng),也是最后一項(xiàng)被刪除啊,好懵,請(qǐng)問(wèn)有人懂嗎
2018-07-13
我試了 沒(méi)問(wèn)題啊