今天用vue遇到了一個很奇怪的問題:我.sync綁定了一個prop::is-amazon.sync="isAmazon",然后在子組件中用$emit給父組件傳值:this.$emit('update:is-amazon',val),結(jié)果發(fā)現(xiàn),父組件里的isAmazon并沒有改變。于是乎,我把名字改了改:isamazon.sync="isAmazon";this.$emit('update:isamazon',val),然后就成功了。。這讓我百思不得其解,因為vue的文檔上說的是監(jiān)聽自定義事件推薦用kebab-case,結(jié)果這里kebab-case不管用了,一臉懵逼中。。。。
2 回答

慕村225694
TA貢獻1880條經(jīng)驗 獲得超4個贊
prop::is-amazon.sync="isAmazon",this.$emit('update:is-amazon',val),this.$emit('update:isAmazon',val)改成這樣呢

jeck貓
TA貢獻1909條經(jīng)驗 獲得超7個贊
在有些情況下,我們可能需要對一個prop進行“雙向綁定”。不幸的是,真正的雙向綁定會帶來維護上的問題,因為子組件可以修改父組件,且在父組件和子組件都沒有明顯的改動來源。這也是為什么我們推薦以update:myPropName的模式觸發(fā)事件取而代之.sync修飾符官方在這里是推薦使用camelCased,但這段話我也看不太懂,希望有人可以分析一下