Vue數據檢監測問題

vue.js是經過數據劫持的方式實現數據的雙向綁定的,其中過程以下:html

當把一個JavaScript對象傳給Vue實例的data選項時,Vue會遍歷此對象的全部屬性並使用 Object.defineProperty(),把這些屬性所有轉化爲 getter/setter 。每一個組件實例都有相應的 watcher 實例對象,它會在組件渲染的時候把屬性記錄爲依賴,以後當依賴的setter被調用時,會通知watcher從新計算,從而導致它關聯的組件得以更新。所以,每當數據變化的時候會引發視圖的變化,更新view。vue

由於Vue在初始化實例時會對屬性進行 getter/setter 轉化,這樣,被轉化的屬性就是 響應式的,而只有在data中聲明的屬性會執行這個過程。因此,後續經過JavaScript傳過來的對象屬性由於沒有在 data 中聲明,因此並不會執行這個轉化過程,所以這些屬性全都是 不響應式的。數組

也是由於這個緣由,如今的 Vue.js 沒法監聽到對象屬性的添加和刪除,也沒法檢測到數組的變更。spa

我我的在解決這個報錯問題的時候是經過將報錯的屬性名在 data 中先進行初始化聲明,後續給對象賦值的時候再進行覆蓋的方式。可是這種方式治標不治本。我的建議仍是使用全局的方式進行聲明。雙向綁定

推薦如下博文,講解很是的詳細。http://www.javashuo.com/article/p-wwixdnaf-p.htmlhtm

相關文章
相關標籤/搜索