三、Vue数据绑定及指令

02. Vue数据绑定

​ Vue 框架很核心的功能就是双向的数据绑定。 双向是指:HTML 标签数据 绑定到 Vue 对象,另外反方向数据也是绑定的。通俗点说就是,Vue 对象的改变会直接影响到 HTML 的标签的变化,而且标签的变化也会反过来影响 Vue 对象的属性的变化。
​ 这样以来,就彻底变革了之前 Dom 的开发方式,之前 Dom 驱动的开发方式尤其是以 jQuery 为主的开发时代,都是 dom 变化后,触发 js 事件,然后在事件中通过 js 代码取得标签的变化,再跟后台进行交互,然后根据后台返回的结果再更新 HTML 标签,异常的繁琐。有了 Vue 这种双向绑定,让开发人员只需要关心 json 数据的变化即可,Vue 自动映射到 HTML 上,而且 HTML 的变化也会映射回 js 对象上,开发方式直接变革成了前端由数据驱动的 开发时代,远远抛弃了 Dom 开发主导的时代了。

Vue绑定文本

​ 数据绑定最常见的形式就是使用 “Mustache” 语法(双大括号)的文本插值,比如模板引擎:handlebars 中就是用的{{}}。创建的 Vue 对象中的 data 属性就是用来绑定数据到 HTML 的。如:

DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>
    <script src="./js/vue.js">script>
head>

<body>

    
    
    <div id="app">
        <span>Message: {{ msg }}span>
    div>
    
    <script>
        var app = new Vue({         // 创建Vue对象。Vue的核心对象。
            el: '#app',               // el属性:把当前Vue对象挂载到 div标签上,#app是id选择器
            data: {                   // data: 是Vue对象中绑定的数据
                msg: 'Hello Vue!'   // message 自定义的数据
            }
        });
    script>
body>

html>

三、Vue数据绑定及指令_第1张图片

Vue绑定内联样式

DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>
    <script src="./js/vue.js">script>
head>

<body>

    
    
    
    <div id="app" v-bind:style="{backgroundColor:pink,width:width,height:height}">
        <div v-bind:style="myDiv">Message: {{ msg }}div>
    div>

    <script>
        var app = new Vue({         // 创建Vue对象。Vue的核心对象。
            el: '#app',               // el属性:把当前Vue对象挂载到 div标签上,#app是id选择器
            data: {                   // data: 是Vue对象中绑定的数据
                myDiv: {
                    backgroundColor: 'red',
                    width: '100px',
                    height: '100px'
                },
                pink: 'pink',
                width: '100%',
                height: '200px'
            }
        });
    script>
body>

html>

三、Vue数据绑定及指令_第2张图片

Vue绑定样式类


DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>

    <script src="./js/vue.js">script>
    <style>
        .box {
            background-color: pink;
            width: 100%;
            height: 200px;
        }

        .inner {
            background-color: powderblue;
            width: 100px;
            height: 50px;
            border: 1px solid black;
        }

        .inner1 {
            background-color: khaki;
            width: 200px;
            height: 10px;
            border: 5px solid black;
        }
    style>
head>

<body>

    <div id="app">
        <div v-bind:class="box">
            我是外层的div
            <div v-bind:class="inner">我是内层的divdiv>
        div>
    div>

    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                box: 'box',
                inner: 'inner'
            }
        })
    script>

body>

html>

三、Vue数据绑定及指令_第3张图片

三、Vue数据绑定及指令_第4张图片

内置指令

路径 说明
v-model 双向数据绑定
v-on 监听事件
v-bind 单向数据绑定
v-text 插入文本内容
v-html 插入包含HTML的内容

v-model演示

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>

    <script src="./js/vue.js">script>
head>
<body>
    
<div id="app">
    <input type="text" v-model="msg"> {{msg}}
div>

<script>

    let vm = new Vue({
        el:"#app",
        data: {
            msg: "v-model"
        }
    })

script>

body>
html>

三、Vue数据绑定及指令_第5张图片

v-text演示

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>

    <script src="./js/vue.js">script>
head>
<body>
    
    <div id="app">
        <p>{{msg}}p>

        <p v-text="msg">p>

        <p v-text="msg">123546p>
    div>

    <script>
        let vm = new Vue({
            el: "#app",
            data:{
                msg: "一切总会过去,不要担心"
            }
        });
    script>

body>
html>

三、Vue数据绑定及指令_第6张图片

v-html演示

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>

    <script src="./js/vue.js">script>
head>
<body>
    <div id="app">

        <p v-html="msg">p>

        <p v-html="msg"> 123456 p>
        
    div>

    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                msg: "同学们,加油"
            }
        })
    script>
body>
html>

三、Vue数据绑定及指令_第7张图片

v-bind演示

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>

    <script src="./js/vue.js">script>
head>
<body>
    <div id="app">

        <input type="text" v-bind:value="msg" style="width: 80%;"/> 
        <input type="text" :value="msg" style="width: 80%;"/> 
    div>

    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                msg: "同学们,加油"
            }
        })
    script>
body>
html>

三、Vue数据绑定及指令_第8张图片

v-on 事件监听指令演示

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>

    <script src="./js/vue.js">script>
head>
<body>
    <div id="app">

        {{msg}}
        <br>
        <button v-on:click="showInfo()">点击执行showInfo()方法button>
        <br>
        <button @click="showInfo()">点击执行showInfo()方法button>
    div>

    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                msg: "同学们,加油"
            },
            methods:{
                showInfo(){
                    this.msg = "我是v-on指令"
                }
            }
        })
    script>
body>
html>

三、Vue数据绑定及指令_第9张图片

路径 说明
v-for 列表渲染
v-if 条件渲染
v-show 显示隐藏

v-for演示

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>

    <script src="./js/vue.js">script>
head>
<body>
    <div id="app">
        <p v-for="(item , index) in list">元素的下标——>{{index}} : 元素内容是——>{{item}} p>
    div>

    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                list: [1,2,3]
            }
        })
    script>
body>
html>

三、Vue数据绑定及指令_第10张图片

v-if 和 v-show 演示

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>

    <script src="./js/vue.js">script>
head>
<body>
    <div id="app">
        <p v-if="isShow" style="background-color: lightgreen;"> v-if p>
        <button @click="isShow = !isShow">点击隐藏或显示v-ifbutton><br>

        <p v-show="isDisplay" style="background-color: lightgreen;"> v-show p>
        <button @click="isDisplay = !isDisplay">点击隐藏或显示v-showbutton>
    div>

    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                isShow: true,
                isDisplay: true
            }
        })
    script>
body>
html>

三、Vue数据绑定及指令_第11张图片

你可能感兴趣的:(Vue,前端,java,vue.js)