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