Vue實例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!--引入Vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
<title>無標題文檔</title>
</head>

<body>
<div id="app">
    {{ a }}
</div>

<div id="app2">
    <p>{{ foo }}</p>
    <!-- 這裏的 `foo` 不會更新! -->
    <button v-on:click="foo = 'bazzzz'">Change it</button>
</div>
</body>
</html>
<script type="text/javascript">
    // 咱們的數據對象
    var data = { a: 123 }

    // 該對象被加入到一個 Vue 實例中
    var vm = new Vue({
        el: '#app',
        data: data
    })
    // 設置屬性也會影響到原始數據
    vm.a = 456;

    // 當這些數據改變時,視圖會進行重渲染。值得注意的是只有當實例被建立時 data 中存在的屬性纔是響應式的。也就是說若是你添加一個新的屬性,好比:
    vm.b = 'hi';
    // 由於b在上面沒有被建立,因此這裏改變b的屬性值,不會從新渲染。
    // 那麼對 b 的改動將不會觸發任何視圖的更新。若是你知道你會在晚些時候須要一個屬性,可是一開始它爲空或不存在,那麼你僅須要設置一些初始值。好比:
    /*data: {
        newTodoText: '',
            visitCount: 0,
            hideCompletedTodos: false,
            todos: [],
            error: null
    }*/

   // 這裏惟一的例外是使用 Object.freeze(),這會阻止修改現有的屬性,也意味着響應系統沒法再追蹤變化。

    var obj = {
        foo: 'bar'
    }

    Object.freeze(obj);//阻止修改現有的屬性,點擊按鈕後不會修改foo的屬性值。

    new Vue({
        el: '#app2',
        data: obj
    })



    // 每一個 Vue 實例在被建立時都要通過一系列的初始化過程——例如,須要設置數據監聽、編譯模板、將實例掛載到 DOM 並在數據變化時更新 DOM 等。同時在這個過程當中也會運行一些叫作生命週期鉤子的函數,這給了用戶在不一樣階段添加本身的代碼的機會。

    // 好比 created 鉤子能夠用來在一個實例被建立以後執行代碼:
    new Vue({
        data: {
            a: 1
        },
        created: function () {
            // `this` 指向 vm 實例
            console.log('a is: ' + this.a)
        }
    })

    // 也有一些其它的鉤子,在實例生命週期的不一樣階段被調用,如 mounted、updated 和 destroyed。生命週期鉤子的 this 上下文指向調用它的 Vue 實例。

    // 不要在選項屬性或回調上使用箭頭函數,好比 created: () => console.log(this.a) 或 vm.$watch('a', newValue => this.myMethod())。由於箭頭函數是和父級上下文綁定在一塊兒的,this 不會是如你所預期的 Vue 實例,常常致使 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之類的錯誤。




</script>
相關文章
相關標籤/搜索