JavaScript日記——一個例子學會Vue.js

大家都知道Vue.js是中國人創造出來的,簡單易用,所以必須要支持一下

Vue采用的MVVM設計模式**

也就是說model和view綁定
model改變,view的內容改變,反之亦然

Vue主要有以下幾個關鍵字

  1. v-model 綁定模型
  2. v-if 判斷是否顯示該dom
  3. v-show 判斷是否將該dom的display設為none
  4. v-else if或者show為false時顯示該dom
  5. v-for 迭代
  6. v-bind 綁定屬性
  7. v-on 綁定方法

我們以一個可查找的信息管理系統為例子

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="styles/demo.css" />
    </head>

    <body>
        <div id="app">
            <span>key</span>
            <!-- 綁定model中search.key -->
            <!-- 內容和下面每一列的數據進行比較 -->
            <!-- 內容改變,下面的每一列都馬上會進行比較 -->
            <input type="text" v-model="search.key">
                <legend>
                    Create New Person
                </legend>
                <div class="form-group">
                    <label>Name:</label>
                    <!-- 綁定model中newPerson.name -->
                    <input type="text" v-model="newPerson.name"/>
                </div>
                <div class="form-group">
                    <label>Age:</label>
                    <!-- 綁定model中newPerson.age -->
                    <input type="text" v-model="newPerson.age"/>
                </div>
                <div class="form-group">
                    <label>Sex:</label>
                    <!-- 綁定model中newPerson.sex -->
                    <select v-model="newPerson.sex">
                    <option value="Male">Male</option>
                    <option value="Female">Female</option>
                </select>
                </div>
                <div class="form-group">
                    <label></label>
                    <!-- @click是v-on:click的縮寫 -->
                    <button @click="createPerson">Create</button>
                </div>
        </fieldset>
        <table>
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Age</th>
                    <th>Sex</th>
                    <th>Delete</th>
                </tr>
            </thead>
            <tbody>
                <!-- 用v-for迭代,$index為每一個item的索引 -->
                <!-- v-if判斷為true則顯示,否則則移除,這里更適合用v-show,v-show并不會移除dom只會將display屬性改為none -->
                <!-- 和搜索框內容進行比較 -->
                <tr v-for="person in people" v-if="person.name.indexOf(search.key)>=0||person.sex.indexOf(search.key)>=0||person.age==search.key">
                        <td >{{ person.name }}</td>
                        <!-- :style是v-bind:style的縮寫,滿足條件則值為前面的,否則為后面的,固定的字符串要用' ',變量不需要用'' -->
                        <!-- v-bind后面還可以接其他的屬性例如class,id -->
                        <td :style="person.age>30 ? 'color: red' : ' ' ">{{ person.age }}</td>
                        <!-- v-else元素必須立即跟在v-if或v-show元素的后面——否則它不能被識別 -->
                        <td v-if="person.sex =='Male'">男</td>
                        <td v-else>女</td>
                        <td class="text-center"><button @click="deletePerson($index)">Delete</button></td>
                </tr>
            </tbody>
        </table>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // 初始化Vue
        //el獲取綁定的標簽,#app獲取id為app的dom,.app的話則獲取class為app的dom
        //data中為模型
        //methods為方法
        var vm = new Vue({
            el: '#app',
            data: {
                search:{
                    key:""
                },
                newPerson: {
                    name: '',
                    age: 0,
                    sex: 'Male'
                },
                people: [{
                    name: 'Jack',
                    age: 30,
                    sex: 'Male'
                }, {
                    name: 'Bill',
                    age: 26,
                    sex: 'Male'
                }, {
                    name: 'Tracy',
                    age: 22,
                    sex: 'Female'
                }, {
                    name: 'Chris',
                    age: 36,
                    sex: 'Male'
                }]
            },
            methods:{
                createPerson: function(){
                    this.people.push(this.newPerson);
                    // 添加完newPerson對象后,重置newPerson對象
                    this.newPerson = {name: '', age: 0, sex: 'Male'}
                },
                deletePerson: function(index){
                    // 刪一個數組元素
                    this.people.splice(index,1);
                }
            }
        })
    </script>

</html>

不需要太多的解釋,直接看代碼就知道Vue用法是什么

效果圖

效果
搜索

代碼我已上傳到github

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容