<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在開發過程中,我想要的結果是,一個表格和資料data陣列繫結,將data中的資料依次遍歷渲染到表格。
而data的資料是通過另一個this.formValidate 來push,程式碼如下
this.formValidate.BookISBN = res.data.Data.ISBN this.formValidate.BookName = res.data.Data.BookTitle this.formValidate.Author = res.data.Data.Author this.data2.push(this.formValidate)
這樣寫造成的結果是:每次新增新的資料時,data2中的所有資料都會變成剛剛新增的新資料,看下圖
第一個記錄錄入
第二個記錄錄入
這就很尷尬,於是想解除資料的雙向繫結。
用JSON,對物件進行深拷貝。先上程式碼
this.formValidate.BookISBN = res.data.Data.ISBN this.formValidate.BookName = res.data.Data.BookTitle this.formValidate.Author = res.data.Data.Author let formdata= JSON.parse(JSON.stringify(this.formValidate)) this.data2.push(formdata)
使用這句話
let formdata= JSON.parse(JSON.stringify(this.formValidate))
其實是通過json之間的解析 建立的臨時變數,不會隨this.formValidate改變而改變。
其中parse和stringfy 兩個函數是json與字串之間資料結構轉變的函數,不瞭解的可以自行查閱。
Vue2.0使用ES5的Object.defineProperty()實現資料劫持和雙向繫結
Obejct.defineProperty()可以新增物件屬性或者修改屬性
用法:
Obejct.defineProperty(obj, prop, descriptor)
obj
:目標物件prop
:物件屬性descriptor
:屬性特性返回處理後的物件obj
如果沒有給Object設定特性的話,預設configurable,enumrable.writable都為false
返回結果:
設定了setter,getter方法以後
這裡可以看到Object.defineProperty()方法劫持了set方法,也就為Vue.2.0的雙向繫結提供了思路
Vue3.0使用ES6的Proxy代理setter,getter方法,代理整個物件,只要物件的某個屬性發生變化,就可以劫持資料
Vue2.0的Object.defineProperty()只能劫持物件中的某個屬性,而Proxy可以監聽整個物件
vue2.0如果物件的屬性增加或者刪除無法監聽到,無法監聽到陣列基於下標的修改,還有無法改變length
釋出訂閱模式多了一層類似代理的關係,排程中心
釋出者-訂閱者模式
釋出訂閱模式在觀察者模式的基礎上加上了一箇中間層代理“通知”的角色,這讓釋出者不直接與溝通者聯絡,不知道有哪些訂閱者訂閱了自己,釋出者只負責“釋出”一個責任,而訂閱者只負責接受資訊然後更新。
訂閱者把想要訂閱的事件註冊到呼叫中心去,釋出者把更新發布到呼叫中心,呼叫中心統一通知訂閱者
實現效果如下:
觀察者模式
有時候觀察者模式又稱為釋出訂閱模式,但其實兩種模式還是存在區別的,觀察者模式是一對多關係,當物件改變,其他依賴它的物件都會更新改變
優點:
缺點:
這裡實現了簡單的觀察者模式,每次obj的name屬性變化時,set都會監聽到, 並且通知觀察者更新資料
Vue模型的建立以及怎麼實現的
對於一個template,先計算出dom樹,生成render函數,然後繪製佈局,最後繪製樣式
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援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