• 前端框架VUE----指令


    一、什么是VUE?

    它是构建用户界面的JavaScript框架(让它自动生成js,css,html等)

    二、怎么使用VUE?

    1、引入vue.js

    2、展示HTML

    <div id="app">
        <p>{{msg}}</p>
        <p>{{ 80+2 }}</p>
        <p>{{ 20>30 }}</p>
        <h1 v-text="msg"></h1>
        <h1 v-html="hd"></h1>
        <h1 v-html="str"></h1>
    </div>

    3、建立一个vue对象

    <script>
        new Vue({
            el:"#app",  //表示当前这个元素开始使用vue
            data:{
                msg:"你好啊",
                hd:"<input type='button' value='啦啦'>",
                str:"你妹的"
            }
        })
    </script>

    三、数据绑定

    1、插入文本{{ }}。如上例,也可以放表达式

    2、插入html:v-html

    四、vue的指令

    指令:是带有v-前缀的特殊属性,通过属性来操作元素

    1、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">
        <title>Title</title>
        <script src="vue.js"></script>
    </head>
    <body>
    <div id="app">
        <p>{{msg}}</p>
        <p>{{ 80+2 }}</p>
        <p>{{ 20>30 }}</p>
        <h1 v-text="msg"></h1>
        <h1 v-html="hd"></h1>
        <h1 v-html="str"></h1>
    </div>
    <script>
        new Vue({
            el:"#app",  //表示当前这个元素开始使用vue
            data:{
                msg:"你好啊",
                hd:"<input type='button' value='啦啦'>",
                str:"你妹的"
            }
        })
    </script>
    </body>
    </html>
    示例

    2、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">
        <title>Title</title>
        <script src="vue.js"></script>
    </head>
    <body>
    <div id="app">
        <h1>问卷调查</h1>
        <form action="" method="post">
            <input type="checkbox">香蕉
            <input type="checkbox">苹果
            <input type="checkbox">橘子
            <input type="checkbox"  @click="qita">其他
            <div v-html="htmlstr" v-show="test"></div>
        </form>
    </div>
    <script>
        new Vue({
            el:"#app",  //表示当前这个元素开始使用vue
            data:{
                htmlstr:'<textarea></textarea>',
                test:false  //默认是隐藏的
            },
            methods:{
                qita:function () {
                    this.test = !this.test  //当一点击其他的时候让显示
                }
            }
    
        });
    
    </script>
    
    </body>
    </html>
    示例

    3、v-if和v-else:根据表达式的真假值来动态插入和移除元素

    4、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">
        <title>Title</title>
        <script src="vue.js"></script>
    </head>
    <body>
    <div id="app">
        <p v-if="pick">我是海燕</p>
        <p v-show="temp">呼啦啦呼啦啦</p>
        <p v-show="ok">你喜欢我吗?</p>
    </div>
    <script>
        var vm = new Vue({
            el:"#app",  //表示当前这个元素开始使用vue
            data:{
    //           pick:true  //显示
               pick:false,   //移除,用注释给替换了
    //            temp :true ,  //显示
               temp :false,   //隐藏
               ok:true
            }
        });
        window.setInterval(function() {
            vm.ok =! vm.ok;
        },1000)  //1000代表1秒
    </script>
    
    </body>
    </html>
    
    if-show示例
    View Code

    5、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">
        <title>Title</title>
        <script src="vue.js"></script>
        <style>
            ul li{
                list-style: none;
            }
        </style>
    </head>
    <body>
        <div id="app">
           <ul>
               <li v-for="item in arr">   <!-- 对一个数组的循环 -->
                   {{ item }}
               </li>
           </ul>
             <ul>
               <li v-for="(item,index) in arr">
                   {{ item }}:{{index}}
               </li>
           </ul>
             <ul>
               <li v-for="item in obj">
                   {{ item }}
               </li>
           </ul>
              <ul>
               <li v-for="(item,key,index) in obj">
                   {{ item }}:{{ key }}:{{ index }}
               </li>
           </ul>
              <ul>
               <li v-for="item in obj2">
                   {{ item.username }}
                   {{ item.age }}
                   {{ item.sex }}
               </li>
           </ul>
            <div v-for="i in 8">  <!--循环8次,打印1 2 3 4 5 6 7 8 -->
                {{ i }}
            </div>
        </div>
        <script>
            var vm = new Vue({
                el:"#app",
                data:{
                    arr:[11,22,33,34],
                    obj:{a:"张三",c:"李四",b:"王麻子",d:"王大拿"},
                    obj2:[
                        {username:"jason"},
                        {age:20},
                        {sex:"male"}
                    ]
                }
            })
        </script>
    </body>
    </html>
    View Code

    6、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">
        <title>Title</title>
        <script src="vue.js"></script>
        <style>
            ul li{
                list-style: none;
            }
        </style>
    </head>
    <body>
        <div id="app">
           <ul>
               <li v-for="item in arr">   <!-- 对一个数组的循环 -->
                   {{ item }}
               </li>
           </ul>
             <ul>
               <li v-for="(item,index) in arr">
                   {{ item }}:{{index}}
               </li>
           </ul>
             <ul>
               <li v-for="item in obj">
                   {{ item }}
               </li>
           </ul>
              <ul>
               <li v-for="(item,key,index) in obj">
                   {{ item }}:{{ key }}:{{ index }}
               </li>
           </ul>
    
            <input type="button" value="点我吧" v-on:click="show()">
            <input type="button" value="点我吧" @click="show()">
    
            <!--以下三种方式都可以-->
            <a href="http://www.baidu.com">我想去百度</a>
            <a v-bind:href="url">我想去百度</a>
            <a :href="url">我想去百度</a>
        </div>
        <script>
            var vm = new Vue({
                el:"#app",
                data:{
                    arr:[11,22,33,34],
                    obj:{a:"张三",c:"李四",b:"王麻子",d:"王大拿"},
                    str:"我来了",
                    url:"http://www.baidu.com"
                },
                methods:{
                    show:function () {
                        alert(123);
                        alert(vm.str);
    //                    alert(this.str)  //如果没有vm,就直接用this
                    }
                }
            })
        </script>
    </body>
    </html>
    View Code

    6、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">
        <title>Title</title>
        <script src="vue.js"></script>
        <style>
            .bk_1{
                 200px;
                height: 200px;
                background-color: silver;
            }
            .bk2_2{
                  200px;
                height: 200px;
                background-color: darkorange;
            }
           .bk_3{
    
                border: 5px solid #000;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <a href="http://www.baidu.com" v-bind:title="msg">腾讯</a>   <!--绑定标题-->
            <a href="http://www.baidu.com" title="啦啦啦">点我</a>   <!--绑定标题-->
            <div v-bind:class="bk"></div>
            <div v-bind:class="bk2"></div>
    
            <div :class="{bk_1:temp,bk_3:temp}">加油,吧</div>  <!-- #temp一定是一个布尔值,为true是就使用bk_2,为false就不为他-->
            <div :class="[bk2,bk3]"></div> <!--如果是多个类就用[bk1,bk2,],就显示两个类的样式-->
        </div>
        <script>
            var vm = new Vue({
                el:"#app",//表示在当前这个元素开始使用VUe
                data:{
                    msg:"我想去腾讯上班",
                    bk:"bk_1",
                    bk2:"bk2_2",
                    bk3:"bk_3",
    //                temp: false,
                    temp: true
                }
            })
        </script>
    </body>
    </html>
    View Code

    7、v-model:把input的值和变量绑定了,实现了数据和视图的双向绑定

    <!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">
        <title>Title</title>
        <script src="vue.js"></script>
    </head>
    <body>
    <div id="app">
        <input v-model="msg">
        <input v-model="msg" value="this is test">
        <p>{{msg}}</p>
        <input type="button" value="变化" @click="change">
    </div>
    <script>
        new Vue({
            el:"#app",  //表示当前这个元素开始使用vue
            data:{
    //            msg:"",
                msg:"aaaaa"
            },
            methods:{
                change:function () {
                    this.msg=512
                }
            }
        });
    
    </script>
    
    </body>
    </html>
    示例1
    <!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">
        <title>Title</title>
        <script src="vue.js"></script>
        <style>
            .cccc{
                display: none;
            }
        </style>
    </head>
    <body>
        <div id="app">
         <div>
             <input type="text" placeholder="姓名" v-model="username">
             <input type="text" placeholder="年龄" v-model="age">
             <input type="text"  v-model="msg" class="cccc">
             <input type="submit" value="添加" @click="add">
         </div>
          <div>
              <table cellpadding="0" border="1">
                  <tr v-for="(item,index) in arr">
                      <td><input type="text" v-model="item.username"></td>
                      <td><input type="text" v-model="item.age"></td>
                      <td><input type="button" value="删除" @click="del(index)"></td>
                      <td><input type="button"  @click="edit(index)" v-model="item.msg"></td>
                  </tr>
              </table>
          </div>
        </div>
        <script>
             new Vue({
                el:"#app",  //表示当前这个元素开始使用vue
                data:{
                   username:"",
                    age:"",  //变量的初始化
                    arr:[],
                    msg:"编辑"
                },
                methods:{
                    add:function () {
                        this.arr.push(
                            {
                                "username":this.username,
                                "age":this.age,
                                "msg":this.msg
                            }
                        );
                        console.log(this.arr)  //打印的是一个数组
                    },
                    del:function (index) {
                        this.arr.splice(index,1);   //删除索引对应的哪一个值
                    },
                    edit:function (index) {
                        console.log(index);
                        if (this.arr[index].msg=="保存"){
    //                        alert(this.arr[index].msg);
                            this.arr[index].msg="编辑";
                        }else{
                            this.arr[index].msg="保存";
                        }
    
                    }
                }
    
            })
    </script>
    
    </body>
    </html>
    示例2

    8、对数组的操作

        - push  #从末尾添加
        - pop  #从末尾删除
        - shift #从头添加
        - unshift #从头删除
        - splice #删除元素。splice(index,1)  #删除这个索引的那一个
        - reverse  #反转

    五、自定义指令

    <!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">
        <title>Title</title>
        <script src="vue.js"></script>
    
    </head>
    <body>
    <div id="app">
        <input type="text" v-focus>
    </div>
    <script>
           new Vue({
                el:"#app",
                data:{
    
                },
               directives:{ //directives定义指令的
                    focus:{   //focus指令的名字
                        inserted:function (els) {    //els绑定的这个元素
                            //inserted当绑定的这个元素  <input type="text" v-focus>显示的时候,
                            els.focus();  //获取焦点的一个方法,和以前的时候是一样的
                            els.style.backgroundColor="blue";
                            els.style.color='#fff'
                        }
                    }
               }
            })
        </script>
    </body>
    </html>
    View Code

    六、实现tag切换的小示例

    <!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">
        <title>Title</title>
        <script src="vue.js"></script>
        <style>
            ul li{
                list-style: none;
                display: inline-block;
                border: 1px solid cornflowerblue;
                height: 50px;
                 200px;
                background: cornflowerblue;
                text-align: center;
                line-height: 50px;
    
            }
        </style>
    </head>
    
    <body>
    <div id="mybox">
        <ul>
            <li><span v-on:click="qh(true)">二维码登录</span></li>
            <li><span v-on:click="qh(false)">邮箱登录</span></li>
        </ul>
        <div v-if="temp">
            <img src="erweima.png" alt="">
        </div>
        <div v-if="!temp">  <!--取反-->
            <form action="http://mail.163.com" method="post">
                <!--method是为了安全   ,action:提交的地址-->
                <p>邮箱:<input type="email"></p>
                <p>密码:<input type="password"></p>
                <p><input type="submit" value="登录"></p>
            </form>
        </div>
    </div>
    <script>
        new Vue({
            el:"#mybox",  //表示当前这个元素开始使用vue
            data:{
                temp:true
            },
            methods:{
                qh:function (t) {
                    this.temp=t
                }
            }
        })
    </script>
    </body>
    </html>
    View Code
  • 相关阅读:
    char , varchar和Nvarchar区别
    练习2-11 计算分段函数[2] (10 分)
    练习2-10 计算分段函数[1] (10 分)
    练习2-9 整数四则运算 (10 分)
    练习2-8 计算摄氏温度 (10 分)
    练习2-6 计算物体自由下落的距离 (5 分)
    练习2-4 温度转换 (5 分)
    练习2-3 输出倒三角图案 (5 分)
    MySQL之Xtrabackup备份与恢复
    MySQL中show语法
  • 原文地址:https://www.cnblogs.com/TheLand/p/9069239.html
Copyright © 2020-2023  润新知