如果子組件發(fā)布訂閱模式的參數(shù)傳this.content,為什么父組件alert的時候是undefined
如果按照index可以傳過去,那content也可以啊,而且我試了如果不傳index,父組件handleDelete的參數(shù)也可以直接用index,是不是因為上面有綁定的原因?如果因為綁定,那content也綁定了的,為什么alert為undefined
如果按照index可以傳過去,那content也可以啊,而且我試了如果不傳index,父組件handleDelete的參數(shù)也可以直接用index,是不是因為上面有綁定的原因?如果因為綁定,那content也綁定了的,為什么alert為undefined
2018-07-21
舉報
2018-10-17
子組件傳遞出去的參數(shù)告訴父組件,如果子組件寫的時候
是this
.$emit(
'delete'
,
this
.index,
this
.content);那么父組件接收的時候就按照這個參數(shù)傳遞的順序進(jìn)行接收,跟你寫的handleDelete:function(index, content){}是對應(yīng)的關(guān)系,可以理解成形式參數(shù),這里的index和content你寫成什么都無所謂,即使你寫成
handleDelete:function(content, index){}都可以,只是content接收的是對應(yīng)的index,index接收的是對應(yīng)的content,所以按照你問的問題,你在子組件中只是將content傳出來了,所以接收的時候
handleDelete:function(index, content){}
,index值就是你傳出的content,因為第二個參數(shù)content這個形參,根本沒有值,所以你接下來alert(content),就是undefined。最后你的代碼中this.arrayList.splice(index, 1)之所以還能運(yùn)行,是因為index接收了你從子組件傳出的content的值,splice方法完整的函數(shù)調(diào)用是根據(jù)JS語法,splice第一個參數(shù)start是一個數(shù)字,你這個index如果是個非數(shù)字字符串,會自動轉(zhuǎn)換成0,也就是你表面上看到刪除成功了,實(shí)際上是刪除了你第一個元素。這個細(xì)節(jié)你可以多添加幾條數(shù)據(jù),看看刪除的是否是你想刪除的來驗證。
2018-08-21
只傳了一個參數(shù)this.content,傳到父組件時默認(rèn)為第一個參數(shù),打印index,值為this.content
2018-07-23
handleClick那邊
this
.$emit
需要將你要傳的參數(shù)寫進(jìn)去,handleDelete這邊需要接受你傳的參數(shù),這兩個要一一對應(yīng),值才會準(zhǔn)確2018-07-22