当一个 Vue 实例被创建时,它将 data 对象中的所有的属性加入到 Vue 的响应式系统中。当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。

    1. <div id="app">
    2. {{a}}
    3. </div>
    4. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    5. <script type="text/javascript">
    6. // 我们的数据对象
    7. var data = { a: 1 }
    8. //这里唯一的例外是使用 Object.freeze(),这会阻止修改现有的属性,也意味着响应系统无法再追踪变化。
    9. // Object.freeze(data);
    10. // 该对象被加入到一个 Vue 实例中
    11. var vm = new Vue({
    12. el : "#app",
    13. data: data
    14. })
    15. // 获得这个实例上的属性
    16. // 返回源数据中对应的字段
    17. vm.a == data.a // => true
    18. // 设置属性也会影响到原始数据
    19. vm.a = 2
    20. data.a // => 2
    21. //监听a变化,并且控制台输出改变前和改变后的值
    22. vm.$watch('a', function(newVal, oldVal){
    23. console.log(newVal, oldVal);
    24. })
    25. /* 除了数据属性,Vue 实例还暴露了一些有用的实例属性与方法。
    26. * 它们都有前缀 $,以便与用户定义的属性区分开来*/
    27. vm.$data.a = "test...."// => test....
    28. </script>