亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

如果子組件發布訂閱模式的參數傳this.content,為什么父組件alert的時候是undefined

如果按照index可以傳過去,那content也可以啊,而且我試了如果不傳index,父組件handleDelete的參數也可以直接用index,是不是因為上面有綁定的原因?如果因為綁定,那content也綁定了的,為什么alert為undefined

https://img1.sycdn.imooc.com//5b5311d9000142fa06530922.jpg

正在回答

4 回答

子組件傳遞出去的參數告訴父組件,如果子組件寫的時候是this.$emit('delete',this.index,this.content);那么父組件接收的時候就按照這個參數傳遞的順序進行接收,跟你寫的handleDelete:function(index, content){}是對應的關系,可以理解成形式參數,這里的index和content你寫成什么都無所謂,即使你寫成handleDelete:function(content, index){}都可以,只是content接收的是對應的index,index接收的是對應的content,所以按照你問的問題,你在子組件中只是將content傳出來了,所以接收的時候handleDelete:function(index, content){},index值就是你傳出的content,因為第二個參數content這個形參,根本沒有值,所以你接下來alert(content),就是undefined。最后你的代碼中this.arrayList.splice(index, 1)之所以還能運行,是因為index接收了你從子組件傳出的content的值,splice方法完整的函數調用是

splice(start:?number,?deleteCount:?number,?...items:?T[]):?T[];

根據JS語法,splice第一個參數start是一個數字,你這個index如果是個非數字字符串,會自動轉換成0,也就是你表面上看到刪除成功了,實際上是刪除了你第一個元素。這個細節你可以多添加幾條數據,看看刪除的是否是你想刪除的來驗證。


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

只傳了一個參數this.content,傳到父組件時默認為第一個參數,打印index,值為this.content

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

handleClick那邊this.$emit需要將你要傳的參數寫進去,handleDelete這邊需要接受你傳的參數,這兩個要一一對應,值才會準確

0 回復 有任何疑惑可以回復我~
handleClick:function(){	this.$emit('delete',this.index,this.content);}???需要在子組件觸發時,多加一個this.content參數就能讓父組件接收了,content就有值了
0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

如果子組件發布訂閱模式的參數傳this.content,為什么父組件alert的時候是undefined

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號