3 vue之插值语法、文本指令、事件指令+案例

一、vue之插值语法

语法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>插值</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></script>
</head>
<body>

<div id="box">
    <ul>
        <li>字符串:{{name}}</li>
        <li>数值:{{age}}</li>
        <li>数组:{{list1}}</li>
        <li>对象:{{obj1}}</li>
        <li>字符串:{{link1}}</li>
        <li>运算:{{10+20+30+40}}</li>
        <li>三目运算符:{{10>20?'':''}}</li>
    </ul>
</div>

</body>
<script>
    let vm = new Vue({
        el: '#box', // 在box这个div中可以写 vue的语法
        data: {
            name: 'Darker', // 字符串
            age: 18, // 数值
            list1: [1,2,3,4],   // 数组
            obj1: {name: 'Darker', age: 19}, // 对象
            link1: '<a href="https://www.baidu.com">百度一下 你就知道</a>'
        }
    })
</script>
</html>

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>插值语法</title>
    <script src="./js/vue.js"></script>
</head>
<body>

<h1>插值语法</h1>
<div id="app">

    <h1>我的名字是:{{name}}</h1>
    <h2>我的年龄是:{{age}}</h2>
    <h3>我的爱好是:{{hobby}}</h3>
    <h4>显示对象:{{obj}}</h4>

    <p>{{url}}</p> 默认情况,原封不动显示,如果能直接渲染成标签,说明存在漏洞 xss攻击


</div>

</body>
<script>
    var vm =new Vue({
        el:'#app',
        data:{
            name:'lqz',
            age:19,
            hobby:['篮球','足球','乒乓球'],
            obj:{wife:'迪丽热巴',addr:'上海'},
            url:'<a href="http://www.baidu.com"></a>'
        }
    })
</script>
</html>

 

 

二、Vue之文本指令

指令就是写在标签上以 v-xx 开头的都是vue的指令,有特殊含义,做一些处理

v-html:把标签字符串显示成标签
v-text:等同于插值
v-show:显示不显示,不是真正删除
v-if:显示不显示,是真正的删除

 

 

v-html

  指令写在标签内,指令对应的变量,直接写就可以了,不需要再用 {{}} 包裹了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-html</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></script>
</head>
<body>

<div id="app">
    {{link}}
    <hr>
    文本指令之v-html: <span v-html="link"></span>
</div>

</body>
<script>
    let vm = new Vue({
        el: '#app', // 在box这个div中可以写 vue的语法
        data: {
            link: '<a href="https://www.baidu.com">百度一下 你就知道</a>'
        }
    })
</script>
</html>

 

 

v-text

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-html</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></script>
</head>
<body>

<div id="app">
    <hr>
    文本指令之v-text: <span v-text="msg"></span>
</div>

</body>
<script>
    let vm = new Vue({
        el: '#app', // 在box这个div中可以写 vue的语法
        data: {
            msg:'dzg is handsome'
        }
    })
</script>
</html>

 

 

v-show

一个标签是否显示,用变量可以,用true或false也可以, 其实是display: none;并不是真正的把dom删除了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-html</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></script>
</head>
<body>

<div id="app">
    <hr>
    文本指令之v-show: <span v-show="b">我是span</span>
</div>

</body>
<script>
    let vm = new Vue({
        el: '#app', // 在box这个div中可以写 vue的语法
        data: {
            b:'true'
        }
    })
</script>
</html>

 

 

 

 

 

 

v-if

真正的删除,效率低

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-html</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></script>
</head>
<body>

<div id="app">
    <hr>
    文本指令之v-if: <span v-if="b">我是span</span>
</div>

</body>
<script>
    let vm = new Vue({
        el: '#app', // 在box这个div中可以写 vue的语法
        data: {
            b:'true'
        }
    })
</script>
</html>

 

 

 

 

 

 

三、vue之事件指令

 

 使用最多的是click事件

v-on:click 可以缩写成@click

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件指令</title>
    <script src="./js/vue.js"></script>
</head>
<body>

<h1>事件指令</h1>
<div id="app">

    v-on表示事件指令,click表示单击,老语法,不用了
    <p><button v-on:click="handleClick">按钮</button></p>
    <br>
    新语法,以后都用这种: @click='函数名'
    <p><button @click="handleClick2">按钮二</button></p>


</div>

</body>
<script>
    var vm = new Vue({
        el: '#app',
        data: {},
        methods: {
            handleClick() {
                alert('我被点了')
            },
            handleClick2() {
                alert("按钮2被点击了")
            }
        }
    })
</script>
</html>

 

 

 

 

 四、案例

点击后显示和不显示div

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-html</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>

<div id="app">
    <button class="button btn-danger" v-on:click="handleClick">点我显示和不显示div</button>

    <div v-show="show">我是div</div>

</div>

</body>
<script>
    let vm = new Vue({
        el: '#app', // 在box这个div中可以写 vue的语法
        data: {
            show:true
        },
        methods:{
            handleClick(){
                this.show = !this.show
            },
        }
    })
</script>
</html>

 

 

 

posted @ 2022-02-09 18:15  甜甜de微笑  阅读(266)  评论(0编辑  收藏  举报