vue

基础语法

带有前缀 v- 的指令,表示它们是 Vue 提供的特殊特性。

v-bind

绑定元素(单向绑定)

<body>
    <div id="app"> 
        <h1 v-bind:title="message">标题</h1> 
        <!-- v-bind 指令的简写形式: 冒号(:) --> 
        <h1 :title="message">标题</h1> 
    </div> 
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script> 
    <script> 
        new Vue({
            el: '#app', 
            data: { 
                message: '页面加载于 ' + new Date().toLocaleString() 
            } 
        }) 
    </script> 
</body>

v-if

条件判断语句

<body>
    <div id="app"> 
        <!--=== 三个等号在 JS 中表示绝对等于(就是数据与类型都要相等) --> 
        <h1 v-if="type === 'A'">A</h1> 
        <h1 v-else-if="type === 'B'">B</h1> 
        <h1 v-else-if="type === 'C'">C</h1> 
        <h1 v-else>who</h1> 
    </div> 
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
    <script> 
        var vm = new Vue({ 
            el: '#app', 
            data: { 
                type: 'A' 
            } 
        }) 
    </script> 
</body>

v-for

循环语句

<body>
    <div id="vue"> 
        <li v-for="item in items"> 
            { { item.message } } 
        </li> 
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script><script> 
        var vm = new Vue({ 
            el: '#app', 
            data: { 
                //数组 
                items: [ 
                    {message: 'Vue.js'}, 
                    {message: 'Node.js'} 
                ] 
            } 
        }); 
    </script> 
</body>
  • items 是数组,item是数组元素迭代的别名。
  • 这里和 Thymeleaf 的语法十分相似。

v-on

监听事件

<body>
    <div id="app"> 
        <!-- v-on 绑定了 click 事件,并指定了名为 sayHi 的方法 --> 
        <button v-on:click="sayHi">单击</button> 
        <!-- v-on 指令的简写形式 @ --> 
        <button @click="sayHi">单击</button> 
    </div> 
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
    <script> 
        var vm = new Vue({ 
            el: '#app', 
            data: { message: 'Hello World' },
            // 方法必须定义在 Vue 实例的 methods 对象中 
            methods: { 
                sayHi: function (event) { 
                    // `this` 在方法里指向当前 Vue 实例 
                    alert(this.message); 
                }
            } 
        }); 
    </script> 
</body>

v-model

双向绑定

  • 数据发生变化的时候,视图跟着变化。
  • 视图发生变化的时候,数据跟着变化。
<body>
    <div id="app"> 
        <!-- v-bind:value只能进行单向的数据渲染 --> 
        <input type="text" v-bind:value="searchMap.keyWord"> 
        <!-- v-model 可以进行双向的数据绑定 --> 
        <input type="text" v-model="searchMap.keyWord"> 
        <p>绑定数据:{ { searchMap.keyWord } }</p> 
    </div> 
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script> 
    <script> 
        new Vue({ 
            el: '#app', 
            data: { 
                searchMap:{ 
                    keyWord: 'kuangshen' 
                } 
            } 
        }) 
    </script> 
</body>

用浏览器打开以上代码可以看到:

  • 改变 v-bind 绑定的输入框的值,下方的值不会改变。
  • 改变 v-model 绑定的输入框的值,下方的值会改变。

组件

<body>
    <div id="app"> 
        <ul>
            <my-component-li v-for="item in items" v-bind:item="item"></my-component-li> 
        </ul>
    </div> 
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
    <script> 
        // 先注册组件 
        Vue.component('my-component-li', { 
            props: ['item'], 
            template: '<li>Hello { {item} }</li>' 
        }); 
        // 再实例化 
        Vue var vm = new Vue({ 
            el: '#app', 
            data: { 
                items: ["张三", "李四", "王五"] 
            } 
        }); 
    </script> 
</body>

说明

  • v-bind:item=”item”:将遍历的 item 项绑定到组件中 props 定义的名为 item 属性上。
  • = 号左边的 itemprops 定义的属性名,右边的 item 为 item in items 中遍历的 item 项的值。
posted @ 2021-11-22 14:45  小飞的~  阅读(29)  评论(0)    收藏  举报