Vue常用指令(入门系列)

259 阅读2分钟

转载请注明出处,谢谢
Vue入门系列友情链接:
Vue基础框架(入门系列)
Vue常用指令(入门系列)--------当前文章

1.Vue常用指令总结(干货放在最前边)

文本相关:v-text  v-html
事件相关:v-no (可简写为@)
显示隐藏:v-if   v-show
属性操作:v-bind(可简写为:)
遍历数据:v-for
数据双向绑定:v-model


vue中提供的指令 都是 v-开头

2.Vue常用指令用法

2.1文本相关

2.1.1 v-text

boyd

<body>
    <div id="app">
       <h2 v-text="message+'!'">深圳</h2>   //Hello!
       <h2 v-text="info+'!'">深圳</h2>      //Vue!
       <h2>{{ message + '!' }} 深圳</h2>    //Hello!深圳
    </div>
</body>

script

<script>
    var app = new Vue({
        el:'#app',
        data:{
            message:'Hello',
            info:'Vue'
        }
    })
</script>

2.1.2 v-html

boyd

<body>
    <div id="app">
        <h2 v-text="message+'!'">深圳</h2>       //Hello!
        <h1>{{content}}</h1>                    //Vue
        <h1 v-html="con"></h1>                 //百度(超链接)
    </div>
</body>

script

<script>
    var app = new Vue({
        el: '#app',
        data: {
            message: 'Hello',
            content: 'Vue',
            con: "<a href='https://www.baidu.com'>百度</a>"
        }
    })
</script>

2.1.3 小结

v-html 可以解析变量里面的标签 相当于innerHTML
v-text 无法解析变量里面的标签 相当于innerText

2.2事件相关

简写:v-on 可以简写成@
语法:@事件名.事件修饰符='函数名/VUE表达式'

2.2.1点击事件

boyd

<body>
    <div id="app">
        <input type="button" value="点击" @click="sayHi">  //吃了没 (点击后弹窗出现)
    </div>
</body>

script

<script>
    var app = new Vue({
        el:"#app",
        methods: {           
            sayHi(){
                alert("吃了没");
            }
        },
    })
</script>

2.2.2其他事件

@click :点击事件
@keyup :键盘事件

2.2.3修饰符

事件修饰符(v-on)
例如@submit.prevent="submit"

名称说明
事件.stop阻止事件冒泡, 也就是当前元素发生事件,但当前元素的父元素不发生该事件
事件.prevent阻止默认事件发生
事件.capture使用事件捕获模式, 主动获取子元素发生事件, 把获取到的事件当自己的事件执行
事件.self只有元素自身触发事件才执行。(冒泡或捕获的都不执行)
事件.once只执行一次

按键修饰符
例如:@keyup.enter="" 或者 @keyup.13=""

别名修饰符键值修饰符对应按键
.delete.8/.46回格 / 删除
.tab.9制表
.enter.13回车
.esc.27退出
.space.32空格
.left.37
.up.38
.right.39
.down.40

 

2.3显示隐藏

2.3.1 v-show、v-if

 boyd

<body>
    <div id="app">
         <div v-show="s">v-show是否显示</div>  //当s等于false不显示元素
         <div v-if="s">v-if是否显示</div>     //当s等于true显示元素
    </div>
</body>

script

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

2.3.2 指令的值

这两种指令的值是布尔值 值为ture的时候元素显示 值为false的时候元素隐藏
布尔表达式 false true 1===1 1==1 2>1 '' undefined 0 null
0 '' null undefined NaN 默认都是转换成false

2.3.3 两者区别

v-if 指令 值为false 的时候,会把dom节点删除,把删除的节点保存到了缓存中,下一次v-if的值为true的时候 再从缓存中拿出来 ,这样就不用重复创建dom节点了
v-if指令并不会频繁销毁和穿件dom节点 不用担心性能问题
v-if是懒性的 第一次为true的时候 才会真正的创建dom
v-show相当于给元素添加display: none;

 

2.4属性操作 v-bind

 boyd

<body>
    <div id="app">
        <img v-bind:src="imgSrc" alt="">   
        <img :src="imgSrc" alt="">               //简写
    </div>
</body>

script

<script>
    var app = new Vue({
        el:"#app",
        data:{
            imgSrc:"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",
        },
    })
</script>

2.5遍历数据  v-for

 boyd

<body>
    <div id="app">
        <ul>
           <li v-for="(it,index) in arr">
                {{ index+1 }}地址:{{ it }}
           </li>
        </ul>
    </div>
</body>

script

<script>
    var app = new Vue({
       el:"#app",
       data:{
           arr:["北京","上海","广州","深圳"],          
       }
    })
</script>

 

2.6数据双向绑定  v-model

 boyd

<body>
    <div id="app">
        <input type="text" v-model="message">
        <h2>{{ message }}</h2>
    </div>
</body>

script

<script>
     var app = new Vue({
         el: "#app",
         data: {
             message: "Hello Vue"
         }
     })
</script>

转载请注明出处,谢谢