搜尋

首頁  >  問答  >  主體

javascript - 關於Vue中的data綁定

Vue的官方文件中說,Vue 實例的資料都保存在 data 物件中,Vue 將會遞歸將 data 的屬性轉換為 getter/setter,從而讓 data 的屬性能夠回應資料變更。

var data = { a: 1 }
// 直接创建一个实例
var vm = new Vue({
  data: data
})
vm.a // -> 1
vm.$data === data // -> true

我現在的問題是:

data() {
      return {
        favorite: (() => {
            return loadFromLocal(this.seller.id, 'favorite', false);
        })()
      };
    }

其中loadFromLocal是全域宣告的函數,Vue實例將data中的屬性轉換成getter和setter,這個立即執行函數的回傳值會因為其它函數變化而改變。當我沒有顯示地呼叫favorite的getter和setter時,Vue是如何監聽資料變化的呢?是每隔一段時間檢查一次立即執行函數的回傳值嗎?

怪我咯怪我咯2746 天前672

全部回覆(2)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-19 10:34:29

    1.立即執行函數在new Vue之前,已經執行了

    var App = {
      data() {
        return {
          a: (()=>{ return 1; })()
        }
      }
    }
    
    new Vue({App});

    2.監聽就是透過getter 和setter進行的,沒有什麼在之前。
    在模板中列印屬性,在ready時存取屬性,都相當於調用了getter

    回覆
    0
  • 为情所困

    为情所困2017-05-19 10:34:29

    雷雷

    回覆
    0
  • 取消回覆