VUE-實例對象


當一個 Vue 實例被創建時,它向 Vue 的響應式系統中加入了其 data 對象中能找到的所有的屬性。當這些屬性的值發生改變時,視圖將會產生“響應”,即匹配更新為新的值。

Vue data訪問

// 我們的數據對象
var data = { a: 1 }
// 該對象被加入到一個 Vue 實例中
var vm = new Vue({
  data: data
})
// 他們引用相同的對象!
vm.a === data.a // => true
// 設置屬性也會影響到原始數據
vm.a = 2
data.a // => 2
// ... 反之亦然
data.a = 3
vm.a // => 3

 

除了 data 屬性,Vue 實例暴露了一些有用的實例屬性與方法。它們都有前綴 $,以便與用戶定義的屬性區分開來。

var data = { a: 1 }
var vm = new Vue({
  el: '#example',
  data: data
})

vm.$data === data // => true
vm.$el === document.getElementById('example') // => true

// $watch 是一個實例方法
vm.$watch('a', function (newValue, oldValue) {
  // 這個回調將在 `vm.a` 改變后調用
})

 

每個 Vue 實例在被創建之前都要經過一系列的初始化過程。例如需要設置數據監聽、編譯模板、掛載實例到 DOM、在數據變化時更新 DOM 等。同時在這個過程中也會運行一些叫做生命周期鈎子的函數,給予用戶機會在一些特定的場景下添加他們自己的代碼。

比如 created 鈎子可以用來在一個實例被創建之后執行代碼:

new Vue({
  data: {
    a: 1
  },
  created: function () {
    // `this` 指向 vm 實例
    console.log('a is: ' + this.a)
  }
})
// => "a is: 1"

也有一些其它的鈎子,在實例生命周期的不同場景下調用,如 mountedupdateddestroyed。鈎子的 this 指向調用它的 Vue 實例。

 

<!DOCTYPE html>
<html style="height: 100%;">

    <head>
        <meta charset="UTF-8">
        <script type="text/javascript" src="../lib/vue.v2.5.12.js"></script>
        <title>v-xxx</title>
    </head>

    <body style="height: 100%;">
        <style>
            .style0 {
                font-size: 25px;
                color: green;
            }
            
            .style1 {
                background: gold;
            }
        </style>
        <!-- 
            VUE實例
                
            REF:
                https://cn.vuejs.org/v2/guide/instance.html
                http://www.runoob.com/vue2/vue-template-syntax.html
        -->
        <div id="appVue">
            <!-- VUE實例 -->
            <div style="height: 150px;background: #CCC;margin: 5px;">
                <div style="font-size: 20px;">
                    v0.VUE對象數據訪問</div>
                <hr />
                <div>
                    <div>
                        <input v-focus/>
                    </div>
                </div>
            </div>
        </div>
        <script>
            var vm = new Vue({
                el: "#appVue",
                data: {
                    msg: "ABCDEFG",
                    msg1: "abcdefg",
                    chPart: "Key",
                    digPart: "123456",
                },
                computed: {
                    reverseMsg: function() {
                        return this.msg.split('').reverse().join('')
                    },
                    fullName: {
                        get: function() {
                            return this.chPart + this.digPart;
                        },
                        set: function(newVar) {
                            this.chPart = newVar;
                            this.digPart = newVar;
                        }
                    }
                },
                methods: {
                    reverseMsg1: function() {
                        return this.msg1.split('').reverse().join('')
                    }
                }
            })
            // 每個Vue實例都會代理其data對象里所有的屬性
            console.log(vm.reverseMsg);
            vm.msg = "AAABBB";
            console.log(vm.reverseMsg);
            vm.fullName = "Null";
            // Vue 實例暴露了一些有用的實例屬性與方法。這些屬性與方法都有前綴 $,
            // 以便與代理的 data 屬性區分
            vm.$data.msg = "Null";
        </script>
    </body>

</html>

 

REF:

https://cn.vuejs.org/v2/guide/instance.html

http://www.runoob.com/vue2/vue-template-syntax.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM