vue.js語法


Vue.js是當下很火的一個JavaScript MVVM(Model-View-ViewModel)庫,它是以數據驅動和組件化的思想構建的。相比於Angular.js,Vue.js提供了更加簡潔、更易於理解的API,使得我們能夠快速地上手並使用Vue.js。

如果你之前已經習慣了用jQuery操作DOM,學習Vue.js時請先拋開手動操作DOM的思維,因為Vue.js是數據驅動的,你無需手動操作DOM。它通過一些特殊的HTML語法,將DOM和數據綁定起來。一旦你創建了綁定,DOM將和數據保持同步,每當變更了數據,DOM也會相應地更新。

當然了,在使用Vue.js時,你也可以結合其他庫一起使用,比如jQuery。

1.使用

使用Vue的過程就是定義MVVM(Model-View-ViewModel)各個組成部分的過程的過程。

 

<!--這里定義View-->
<
div id="app">{{ message }}</div>
<script src="js/vue.js"></script>
<script>
        // 這里定義Model
        var exampleData = {
            message: 'Hello World!'
        }

        // 這里創建一個 Vue 實例或 "ViewModel"
        // 連接 View 與 Model
        new Vue({
            el: '#app',
            data: exampleData
        })
</script>

 

2.Vue.js的常用指令

 

Vue.js提供了一些常用的內置指令,接下來我們將介紹以下幾個內置指令:

 

  • v-if指令
  • v-show指令
  • v-else指令
  • v-for指令
  • v-bind指令
  • v-on指令

Vue.js具有良好的擴展性,我們也可以開發一些自定義的指令,后面的文章會介紹自定義指令。

2.1 v-if指令

v-if后面賦予 可以轉化為布爾類型的表達式

<div id="app">
            <h1>Hello, Vue.js!</h1>
            <h1 v-if="yes">Yes!</h1>
            <h1 v-if="no">No!</h1>
            <h1 v-if="age >= 25">Age: {{ age }}</h1>
            <h1 v-if="name.indexOf('jack') >= 0">Name: {{ name }}</h1>
</div>

 <script src="js/vue.js"></script>
 <script>
        var vm = new Vue({
            el: '#app',
            data: {
                yes: true,
                no: false,
                age: 28,
                name: 'keepfool'
            }
        })
 </script>

這里最后就輸出

<div id="app">
    <h1>Hello, Vue.js!</h1>
    <h1>Yes!</h1>
    <!---->
    <h1>Age: 28</h1>
    <!---->
</div>

2.2 v-show

  <div id="app">
            <h1>Hello, Vue.js!</h1>
            <h1 v-show="yes">Yes!</h1>
            <h1 v-show="no">No!</h1>
            <h1 v-show="age >= 25">Age: {{ age }}</h1>
            <h1 v-show="name.indexOf('jack') >= 0">Name: {{ name }}</h1>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                yes: true,
                no: false,
                age: 28,
                name: 'keepfool'
            }
        })
    </script>

這里代碼只是v-if改為v-show

輸出為

<div id="app">
<h1>Hello, Vue.js!</h1>
<h1>Yes!</h1>
<h1 style="display: none;">No!</h1>
<h1>Age: 28</h1>
<h1 style="display: none;">Name: keepfool</h1>
</div>

這里區別是上面v-if直接不輸出html代碼,這里用display:none隱藏

2.3 v-else指令

<h1 v-if="age >= 25">Age: {{ age }}</h1>
<h1 v-else>Name: {{ name }}</h1>

<script src="js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                age: 28,
                name: 'keepfool',
                sex: 'Male'
            }
        })
</script>

 前一兄弟元素必須有 v-if 或 v-else-if,新版的vue.js新增了v-else-if用法也跟v-if一樣,不過前一兄弟元素必須有v-ifv-else-if,舊版的v-else前面可以跟v-show,但新版v-else前面不能是v-show了。

 

2.4 v-for指令

<div v-for="p in people">
      <h1>Age: {{ p.age }}</h1>
      <h1>Name: {{ p.name }}</h1>
      <h1>Sex: {{ p.sex }}</h1>
</div>

<script charset="utf-8" src="js/vue.js"></script>
<script type="text/javascript">
     var myModel = {
        people:[
            {
                age: 25,
                name: 'keepfool',
                sex: 'Male'
            },
            {
                age: 26,
                name: 'keepfool2',
                sex: 'FeMale'
            },
            {
                age: 27,
                name: 'keepfool3',
                sex: 'Male2'
            }
        ]
        
    };

 var vm = new Vue({
    el: '#app',
    data: myModel
})
</script>

父元素用v-for,子元素可以遍歷綁定的對應Array | Object | number | string

v-for還可以這樣用:

<div v-for="(item, index) in items"></div>
<div v-for="(val, key) in object"></div>
<div v-for="(val, key, index) in object"></div>

 

2.5 v-bind指令

v-bind指令可以在其名稱后面帶一個參數,中間放一個冒號隔開,這個參數通常是HTML元素的特性(attribute)

<div id="app">
      <ul class="pagination">
          <li v-for="n in pageCount">
              <a href="javascripit:void(0)" v-bind:class="activeNumber === n ? 'active' : ''">{{ n }}</a>
          </li>
      </ul>
</div>
  <script src="js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                activeNumber: 1,
                pageCount: 10
            }
        })
    </script>

又例如:

<img v-bind:src="'/path/to/images/' + fileName">
<div v-bind="{ 'id': someProp, 'other-attr': otherProp }"></div>

 

2.6 v-on指令

 <div id="app">
            <p><input type="text" v-model="message"></p>
            <p>
                <!--click事件直接綁定一個方法-->
                <button v-on:click="greet">Greet</button>
            </p>
            <p>
                <!--click事件使用內聯語句-->
                <button v-on:click="say('Hi')">Hi</button>
            </p>
</div>

 <script src="js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                message: 'Hello, Vue.js!'
            },
            // 在 `methods` 對象中定義方法
            methods: {
                greet: function() {
                    // // 方法內 `this` 指向 vm
                    alert(this.message)
                },
                say: function(msg) {
                    alert(msg)
                }
            }
        })
    </script>

 

2.7 v-model指令

v-model在表單控件元素上創建雙向數據綁定

<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>

 


免責聲明!

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



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