vue .sync 修飾符 更改父級傳值

2.3.0+ 新增
在有些情況下钠四,我們可能需要對一個 prop 進行“雙向綁定”幔嫂。不幸的是瘪撇,真正的雙向綁定會帶來維護上的問題港庄,因為子組件可以變更父組件倔既,且在父組件和子組件都沒有明顯的變更來源鹏氧。

這也是為什么我們推薦以 update:myPropName 的模式觸發(fā)事件取而代之。舉個例子把还,在一個包含 title prop 的假設(shè)的組件中,我們可以用以下方法表達對其賦新值的意圖:

this.$emit('update:title', newTitle)

然后父組件可以監(jiān)聽那個事件并根據(jù)需要更新一個本地的數(shù)據(jù) property吊履。例如:

<text-document
  v-bind:title="doc.title"
  v-on:update:title="doc.title = $event"
></text-document>

為了方便起見,我們?yōu)檫@種模式提供一個縮寫,即 .sync 修飾符:

<text-document v-bind:title.sync="doc.title"></text-document>

注意帶有 .sync 修飾符的 v-bind 不能和表達式一起使用 (例如 v-bind:title.sync=”doc.title + ‘!’” 是無效的)袖迎。取而代之的是,你只能提供你想要綁定的 property 名燕锥,類似 v-model。

當(dāng)我們用一個對象同時設(shè)置多個 prop 的時候归形,也可以將這個 .sync 修飾符和 v-bind 配合使用:

<text-document v-bind.sync="doc"></text-document>

這樣會把 doc 對象中的每一個 property (如 title) 都作為一個獨立的 prop 傳進去,然后各自添加用于更新的 v-on 監(jiān)聽器厚棵。

將 v-bind.sync 用在一個字面量的對象上,例如 v-bind.sync=”{ title: doc.title }”婆硬,是無法正常工作的,因為在解析一個像這樣的復(fù)雜表達式的時候彬犯,有很多邊緣情況需要考慮。

例子

<!DOCTYPE html>
<html lang="en">
<head>
    <title>使用sync更改父級傳值</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
    </div>
    <script>
        Vue.component("ComponentA", {
            props:["info"],
            template:`
            <div>
                我是子節(jié)點
                <button @click="handleClick">點擊我改變父級</button>
            </div>
            `,
            methods: {
                handleClick() {
                    let arr = [1,2,3]
                    this.$emit("update:data", arr);
                }
            },
        })
        const app = new Vue({
            el:"#app",
            data:{
                info:{
                    data:[]
                },
            },
            template:`
            <div>
                我是父級節(jié)點
                <ComponentA  :data.sync="info.data"></ComponentA>
                {{info.data}}
            </div>
            `,
        })
    </script>
</body>
</html>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末湖蜕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子昭抒,更是在濱河造成了極大的恐慌,老刑警劉巖虚茶,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異婆殿,居然都是意外死亡,警方通過查閱死者的電腦和手機罩扇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喂饥,“玉大人,你說我怎么就攤上這事员帮。” “怎么了捞高?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長硝岗。 經(jīng)常有香客問我氢哮,道長型檀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任裂七,我火速辦了婚禮皆看,結(jié)果婚禮上碍讯,老公的妹妹穿的比我還像新娘。我一直安慰自己捉兴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布禾乘。 她就那樣靜靜地躺著虽缕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪氮趋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天剩胁,我揣著相機與錄音,去河邊找鬼晾腔。 笑死,一個胖子當(dāng)著我的面吹牛灼擂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播觉至,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峻贮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沃暗,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎何恶,沒想到半個月后孽锥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡惜辑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年唬涧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盛撑。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抵卫,靈堂內(nèi)的尸體忽然破棺而出狮荔,到底是詐尸還是另有隱情,我是刑警寧澤介粘,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站姻采,受9級特大地震影響雅采,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜慨亲,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一婚瓜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刑棵,春花似錦巴刻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽正蛙。三九已至督弓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愚隧,已是汗流浹背锻全。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工狂塘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荞胡。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓廊营,卻偏偏與公主長得像,于是被迫代替她去往敵國和親萝勤。 傳聞我的和親對象是個殘疾皇子露筒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355