<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
上一節中我們已經討論過Vue中並沒有真正的雙向繫結。Vue中的 props等資料是單向流動的,由父級至子級向下繫結的,即:每次父元件更新時,子元件中的所有 props 都會重新整理為最新的值。如果在子元件中修改 props ,Vue會向你發出一個警告,且並不能通過修改子元件的資料來更改父元件的資料)。
如果有需求,我們可以在父元件中,子元件的標籤上宣告一個監聽事件,在子元件想要修改資料時使用$emit觸發事件並傳入新的值,通知父元件進行修改。這就可以實現某種程度上的雙向繫結。
真正的雙向繫結會帶來維護上的問題,因為子元件可以變更父元件,且在父元件和子元件兩側都沒有明顯的變更來源。Vue 團隊推薦以 update:myPropName
的模式觸發事件取代直接修改的操作。這就用到了 .sync
修飾符。
自定義元件中,v-bind
命令的 .sync
修飾符同 v-model
一樣,其實本質上都是Vue的語法糖,用於實現父子元件間接的資料雙向綁。需要注意的一點是,Vue3 中已經不再有 .sync 修飾符了,新的 v-model 取代了 Vue2 中的 v-model 和 .sync 修飾符。本文作為 Vue 入門的心得總結,這裡討論的是 Vue2中 的 .sync
修飾符。
一言以蔽之,v-bind
命令的.sync
修飾符實質就是父元件監聽子元件更新某個props的請求的縮寫語法,一種語法糖。
如:
<Child v-bind:title.sync="title" />
完全等價於:
<Child v-bind:title="title" v-on:update:title="title = $event" ></Child>
與之配合,在子元件中,需要新增下面這段程式碼來通知父元件對這個prop重新賦值:
this.$emit('update:title', newTitle)
這一個 $emit 可以通過繫結事件觸發,也可以使用 watch 監聽等方式來觸發。
此外,當我們用一個物件 obj
同時設定多個 prop 的時候,也可以將這個 .sync
修飾符和 v-bind
配合使用:
<Son v-bind.sync="obj"></Son>
data(){ return { obj:{read:true, name:'', title:'', length:''} } },
這樣會把 obj
物件中的每一個 property (如 title
) 都作為一個獨立的 prop 傳進去,然後各自新增用於更新的 v-on
監聽器。
需要注意,帶有 .sync
修飾符的 v-bind
命令 不能 和表示式一起使用
(例如 :title.sync=”doc.title + ‘!’”
是無效的)。
你只能提供你想要繫結的 property 名,類似 v-model
。
另外還需要注意將 v-bind.sync
用在一個字面量的物件上,例如 v-bind.sync=”{ title: doc.title }”
,是無法正常工作的,因為在解析一個像這樣的複雜表示式的時候,有很多邊緣情況需要考慮。
.sync
從功能上看和 v-model
十分相似,都是為了實現資料的“雙向繫結”,本質上,也都不是真正的雙向繫結,而是語法糖,這是他們的相同之處。
但相比較之下,.sync
更加靈活,它可以在一個元件內給多個 prop 使用,而 v-model
在一個元件中只能有一個 prop ,在 Vue2 中是這樣。
需要注意,Vue3中 v-model 已經可以給多個prop使用了
從語法的內容來看,v-model
繫結的值和觸發的事件是較為固定的,根據不同型別的特定元件有對應的繫結值和事件,比如 input 元件,select 元件等表單元件,日期時間選擇元件,顏色選擇器元件等,這些元件所繫結的值使用 v-model
比較合適。
其他情況下,需要父子元件之間資料相互更新,還是使用 .sync
。.sync
針對更多的是各種的狀態變更,在父子元件之間互相傳遞,是一種 update 操作。
以上就是Vue重要修飾符.sync對比v-model的區別及使用詳解的詳細內容,更多關於Vue修飾符.sync v-model的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45