近些日子上手vue全家桶,深感本身的知識水平淺薄,在摸索之中記錄了我遇到的一些問題的解決方法。html
這個一開始我就想利用vuex
的store存儲到state之中就大功告成了。
然而發現事情並無那麼簡單,本身原來的js寫法是利用oninput
事件進行記錄用戶輸入的內容。可是兼容性並非特別好。
幾天前搜索的時候發現了一個更好的方法:
先提取store中的數據傳給computed
計算屬性,而後再把這個值傳給v-model
用於表單的數據綁定,最後再爲這個計算屬性增長一個setter
,在表單數據變化的時候對值進行commit
提交,從而達到數據的實時更新的效果。
參考問答:請問vue的html標籤能夠用v-model來改變store中的state嗎?vue
在vue之中由於vm.$el
的存在就能夠利用ref替代原來的dom操做了。
可是有些狀況refs仍是會出現問題的。
首先不要再mounted
鉤子以前調用,這樣的話由於要獲取的對象並無掛載到實例上而致使失敗。
另外還有一種狀況就是,不要在響應式的渲染之中(我的的失敗經歷:條件渲染v-if和循環v-for)使用獲取ref註冊的元素或組件。
雖然在控制檯之中能夠看到this.$refs
包含了你要獲取的對象,可是你在實際調用之中會獲取失敗。
這也是在vue官方文檔裏進行了說明:vuex
關於ref註冊時間的重要說明: 由於ref自己是做爲渲染結果被建立的,在初始渲染的時候你不能訪問它們 - 它們還不存在!
$refs
也不是響應式的,所以你不該該試圖用它在模版中作數據綁定。segmentfault
對於這種狀況咱們能夠有如下兩種方法進行變通處理:dom
直接爲元素添加id經過原始dom進行操做處理this
經過nextTick進行渲染後的refs獲取,這樣就不會出現獲取失敗的狀況。
對於nextTick的官方說明以下code
在下次 DOM 更新循環結束以後執行延遲迴調。在修改數據以後當即使用這個方法,獲取更新後的 DOMhtm