美文网首页
2019-06-27 Vue之指令

2019-06-27 Vue之指令

作者: 果冻_4c9b | 来源:发表于2019-06-27 16:40 被阅读0次

v-cloak

处理数据渲染因网速过慢,到最后用户可以看见类似{{msg}}的数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        /* 处理数据渲染因网速过慢,到最后用户可以看见类似{{msg}}的数据 */
      [v-cloak]{
          display: none;
      }
    </style>
</head>
<body>
    <div id="app">
        <p v-cloak="">
           {{msg}}
        </p>
    </div>
    <script src="./js/vue.js"></script>
    <script>
    var vm = new Vue({
    el : "#app", 
    data : { 
        'msg':'测试信息'
    }
    })
    </script>
</body>
</html> 

v-text、v-html

<!DOCTYPE html>
<html lang="en">

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

<body>
    <div id="app">
        <p>{{msg}}</p>
        <!-- v-text 是将数据当text文本去解析与{{}}效果一样 -->
        <p v-text="msg"> </p>
        <!-- v-html是将数据当做html 代码去解析 -->
        <p v-html="msg"></p>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
             msg:'<span>hello vue!!!</span>'
            }
        })
    </script>
</body>
</html>

v-bind属性绑定

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!--  v-bind属性绑定-->
   <p v-html="msg" v-bind:abc="title"></p>
      <!--  v-bind缩写-->
     <p v-html="msg" :abc="title"></p>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg:'测试信息',
                title:'绑定参数信息'
            }
        })
    </script>
</body>
</html>

v-on绑定事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!-- v-on绑定事件 -->
        <button v-on:click="showNum">按钮</button>
       <button v-on:click="showNum2">按钮</button>
       <!-- 用@event 缩写 -->
       <button @click="showNum3">按钮</button>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {},
            methods: {
               showNum(){
                 console.log(1)
                },
                showNum2(){
                 console.log(2)
                },
                 showNum3(){
                 console.log(3)
                }
            },
        })
    </script>
</body>
</html>

跑马灯练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <h4 v-html="msg"></h4>
        <button @click="lang">浪起来</button>
        <button @click="stop">别浪</button>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg: '猥琐发育,别浪~~~',
                intervarId:null
            },
            methods: {
                lang() {
                    if(this.intervarId!=null){
                        return;
                    }
                       // 操作msg
                       this.intervarId = setInterval(() => {
                        var first = this.msg.substring(0, 1);
                        var rest = this.msg.substring(1);
                        this.msg = rest + first;
                        console.log(this.msg);
                    }, 500)
                },
                stop(){
                      if(this.intervarId!=null){
                        clearInterval(this.intervarId); 
                        this.intervarId=null
                    }
                }
            },
        })
    </script>
</body>
</html>

事件修饰符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
      <!-- capture 以捕获模式处理事件由内向外-->
    <!-- <div id="app" @click.capture='showBox'> -->
        <!-- self 直接点击当前元素才触发 -->
    <div id="app" @click.self='showBox'>
        <!-- prevent取消默认事件 -->
        <a href="https://baidu.com" @click.prevent='showInfo'>去百度</a>
        <!--stop 阻止冒泡事件 -->
        <button @click.stop='showBtn'>阻止冒泡</button>
        <!-- once只可以点击一次 -->
         <button @click.once='showBtn'>self</button>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {},
            methods: {
                showInfo(){
                    console.log("测试信息")
                },
                showBtn(){
                    console.log("按钮信息")
                },
                 showBox(){
                    console.log("div")
                }
            },
        })
    </script>
</body>
</html>

v-model双向绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <p> java2 有 {{num}} 人</p>
        <input type="text" v-model="num">
        <input type="checkbox" :checked='flag'> 
        <button @click='change'>切换</button>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg:'java2',
                num:0,
                flag:true
            },
            methods: {
                change(){
                    this.flag = !this.flag;
                }            
            },

        })
    </script>
</body>
</html>

简易计算器

<!DOCTYPE html>
<html lang="en">

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

<body>
  <div id="app">
    <input type="text" v-model="first">
    <select v-model="fuhao">
      <option value="+">+</option>
      <option value="-">-</option>
      <option value="*">*</option>
      <option value="/">/</option>
    </select>
    <input type="text" v-model="second">
    <button @click='jisuan'>=</button>
    <input type="text" v-model="rueslt">
  </div>
  <script src="./js/vue.js"></script>
  <script>
    var vm = new Vue({
      el: "#app",
      data: {
        rueslt: 0,
        first: 0,
        second: 0,
        fuhao: '+',
      },
      methods: {
        jisuan() {
          switch (this.fuhao) {
            case '+':
              this.rueslt = parseFloat(this.first) + parseFloat(this.second);
              break;
            case '-':
              this.rueslt = parseFloat(this.first) - parseFloat(this.second);
              break;
            case '*':
              this.rueslt = parseFloat(this.first) * parseFloat(this.second);
              break;
            case '/':
              this.rueslt = parseFloat(this.first) / parseFloat(this.second);
              break;
          }
        }
      },
    })
  </script>
</body>
</html>

通过class赋予样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .fontred {
            color: red
        }
        .fontsize {
            font-size: 16px
        }
        .fontgreen {
            color: green
        }
    </style>
</head>
<body>
    <div id="app">
        <h2 class="fontred fontsize">class赋予样式</h2>
        <!-- 绑定数据 -->
        <h2 :class="fred">class赋予样式</h2>
        <!-- 绑定数组 -->
        <h2 :class="['fontred','fontsize']">class赋予样式</h2>
        <!-- 绑定对象 -->
        <h2 :class="{'fontgreen':true}">class赋予样式</h2>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                fred: 'fontred',
            }
        })
    </script>
</body>
</html>

v-for

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="(item,key) in user" >{{key}}:{{item}}</li>
            <hr>
             <li v-for="(item, index) in list" :key="item.id">
                 {{item.id}},{{item.name}},{{item.age}},{{item.birthday}}
             </li>
        </ul>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                // 对象
                user:{
                    id:'10001',
                    name:'张三',
                    age:33,
                    birthday:new Date()
                },
                arr:[0,2,3,4],
                // 数组中的对象
                list:[
                    { id:'10001', name:'张三', age:33, birthday:new Date()          },
                    { id:'10001', name:'张三', age:33, birthday:new Date()          },
                ]
            }
        })
    </script>
</body>
</html>

添加成员

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
</head>
<body>
   <div id="app">
       <input type="text" name="" v-model="id" id="" placeholder="用户id">
       <input type="text" name="" v-model='name' id="" placeholder="用户名称">
       <button @click="insert">添加</button>
       <table border="2" cellspacing='0' cellpadding='10'>
           <thead>
               <tr>
                   <th>用户Id </th>
                   <th>用户名称</th>
                   <th>日期</th>
               </tr>
           </thead>
           <tbody>
               <tr v-for="(item, index) in list" :key="index">
                   <th>{{item.id}}</th>
                   <th>{{item.name}}</th>
                   <th>{{item.birthday}}</th>
               </tr>
           </tbody>
       </table>
   </div>
   <script src="./js/vue.js"></script>
   <script>
       var vm = new Vue({
           el: "#app",
           data: {
               id: '',
               name: '',
               list: []
           },
           methods: {
               insert() {
                   var obj = { 'id': this.id, 'name': this.name, 'birthday': new Date() };
                   this.list.push(obj)
                   this.id = this.name = ''
               }
           },
       })
   </script>
</body>
</html>

v-if和v-show的使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!-- 不经常改变或使用的 v-if -->
        <h1 v-if="flag">这是v-if的内容</h1>
        <!-- 经常切换的显示或消失 v-show -->
        <h1 v-show="flag">这是v-show的内容</h1>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                flag:true
            }
        })
    </script>
</body>
</html>

v-if补充

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!-- 不经常改变或使用的 v-if -->
        <h1 v-if="flag">111111</h1>
        <h1 v-else>222222</h1>
        <h1 v-if="score>80">优秀</h1>
        <h1 v-else-if="score<60">不及格</h1>
        <h1 v-else>及格</h1>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                flag: false,
                score: 88
            }
        })
    </script>
</body>
</html>

相关文章

网友评论

      本文标题:2019-06-27 Vue之指令

      本文链接:https://www.haomeiwen.com/subject/qjmrcctx.html