zoukankan      html  css  js  c++  java
  • VUE学习小结

    构造VUE实例

    new VUE({

      el:'选择器',

      data:{

        k1:v1,

        k2:v2,

        ...

      },

      methods:{

        method1(){

          ...

        },

        method2(){

          ...

        }

      }

    })

    说明:

    VUE构造函数的参数是一个json对象,它主要有3个键:

    el表示数据在什么元素内有效,它的值是一个选择器,可以是id选择器,也可以是类选择器,不能是body。

    data显示就是数据,是一个json格式,在html双标签内引用如:<h1>{{k1}}</h1>

    methods通常定义响应事件的方法,作为html元素的属性引用如:<button @click="method1">确定</button>,@click是v-on:click的缩写。

    v-bind

    v-bind:class="{样式名:data中布尔型的变量}"

    如:v-bind:class="{active:isActive}

    说明:active是css样式名(.active),isActive是data中的一个bool型变量,如果它的值为true,则采用.active样式,否则就不采用。

    扩展:

      (1)v-bind:class="{ active: isActive, 'text-danger': hasError }"

      (2)v-bind:class="classObject" //classObject={ active: isActive, 'text-danger': hasError }

    v-bind:class="表达式"

    如:v-bind:class="isRed?'red':'green'"

    说明:主要根据data中的isRed的值(true还是false)来选择css样式,true的话就采用‘red’,‘false’的话就采用‘green’。'red'和'green'是CSS类选择器的名字,分别是“.red”和“.green”。

    v-bind:style="{属性1:值1,属性2:值2}"

    如:v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"

    说明:值1activeColor和值2fontSize是Data中的键。

    综合实例:

    <!doctype html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title></title>
            <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
            <link href="../css/mui.min.css" rel="stylesheet" />
            <style type="text/css">
                .red {
                    background: red;
                }
                
                .blue {
                    background: blue;
                }
                
                .green {
                    background: green;
                }
            </style>
        </head>
    
        <body>
            <header class="mui-bar mui-bar-nav">
                <h1 class="mui-title">标题</h1>
            </header>
            <div class="mui-content">
                <ul class="mui-table-view">
                    <li class="mui-table-view-cell" v-for="(room,index) in rooms" :class="colors[room.status]">
                        <h4>{{room.id}}</h4>
                        <p>{{index}}</p>
                        <p>
                            {{room.status}}
                        </p>
                        <button type="button" class="mui-btn mui-btn-purple" @click="del(index)">删除</button>
                    </li>
                </ul>
                <div :class="isRed?'red':'green'" style="height: 50px;margin-top: 10px;">
                    <a @click="isRed=!isRed">vip</a>
                </div>
                <form class="mui-input-group" style="margin-top: 10px;">
                    <div class="mui-input-row">
                        <label for="">房号:</label>
                        <input type="text" v-model="id" />
                    </div>
                    <div class="mui-input-row">
                        <label for="">状态:</label>
                        <select name="" id="" v-model="status">
                            <option value="未到店">未到店</option>
                            <option value="已到店">已到店</option>
                            <option value="消费中">消费中</option>
                        </select>
                    </div>
                    <div class="mui-button-row">
                        <button type="button" class="mui-btn mui-btn-primary" @click="add2">添加</button>
                        <button type="reset" class="mui-btn mui-btn-danger">取消</button>
                    </div>
                </form>
            </div>
    
            </div>
            <script src="../js/mui.min.js"></script>
            <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
            <script type="text/javascript">
                mui.init();
                var rooms = [{
                        id: '1001',
                        status: '未到店'
                    },
                    {
                        id: '1002',
                        status: '已到店'
                    },
                    {
                        id: '1003',
                        status: '消费中'
                    },
                ];
    
                var vm = new Vue({
                    el: '.mui-content',
                    data: {
                        id: '',
                        status: '未到店',
                        isRed: true,
                        rooms: rooms,
                        colors: {
                            '未到店': 'red',
                            '已到店': 'blue',
                            '消费中': 'green'
                        }
                    },
                    methods: {
                        add1() {
                            var max_id = parseInt(this.rooms[0].id);
                            for(var i = 0; i < this.rooms.length; i++) {
                                if(this.rooms[i].id > max_id) {
                                    max_id = this.rooms[i].id;
                                }
                            }
                            var new_id = parseInt(max_id) + 1;
                            var statusArr = ['未到店', '已到店', '消费中'];
                            var new_index = Math.round(Math.random() * 10) % 3;
                            console.log(new_index);
                            var new_status = statusArr[new_index];
                            this.rooms.push({
                                id: new_id,
                                status: new_status
                            });
                        },
                        add2() {
                            this.rooms.push({
                                id: this.id,
                                status: this.status
                            });
                        },
                        del(index){
                            this.rooms.splice(index,1);
                        }
                    }
    
                })
            </script>
        </body>
    
    </html>

    v-model

    文本框

    如:<input type="text" v-model="var1">

    说明:表单控件的双向绑定,内存变量var1的值可以改变控件的值(value),同时value也可改变内存变量var1的值。

    单选按纽

      <input type="radio"  value="男" v-model="sex"/><label for="">男</label>&nbsp;&nbsp;

    <input type="radio" value="女" v-model="sex"/><label for="">女</label>

    <p>您的性别是:{{sex}}</p>

    复选框

      <input type="checkbox"  value="" v-model="like"/><label for="">喜欢游戏?{{like}}</label><br />

    <hr />

    <input type="checkbox" value="StarCraft" v-model="games"/><label for="">StarCraft</label><br />

    <input type="checkbox" value="WarCraft" v-model="games"/><label for="">WarCraft</label><br />

    <input type="checkbox" value="FIFA" v-model="games"/><label for="">FIFA</label>

    <p>你选择的是:{{games}}</p>

      <!-- games须是一个数组 -->

    列表

      <select name="" v-model="story">

    <option value="">--选择--</option>

    <option value="三国演义">三国演义</option>

    <option value="水浒传">水浒传</option>

    <option value="西游记">西游记</option>

    <option value="红楼梦">红楼梦</option>

    </select>

    <p>你选择的小说是: {{story}}</p>

     

    综合实例:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <body>
            <div class="container">
                <h2>文本框</h2>
                <input type="text" v-model="txt" />
                <p>你输入的内容是:{{txt}}</p>
                <h2>单选按纽</h2>
                <input type="radio" name="" id="" value="男" v-model="sex"/><label for=""></label>&nbsp;&nbsp;
                <input type="radio" name="" id="" value="女" v-model="sex"/><label for=""></label>
                <p>您的性别是:{{sex}}</p>
                <h2>复选框</h2>
                <input type="checkbox" name="" id="" value="" v-model="like"/><label for="">喜欢游戏?{{like}}</label><br />
                <hr />
                <input type="checkbox" name="" id="" value="StarCraft" v-model="games"/><label for="">StarCraft</label><br />
                <input type="checkbox" name="" id="" value="WarCraft" v-model="games"/><label for="">WarCraft</label><br />
                <input type="checkbox" name="" id="" value="FIFA" v-model="games"/><label for="">FIFA</label>
                <p>你选择的是:{{games}}</p>
                <h2>Select列表</h2>
                <select name="" v-model="story">
                    <option value="">--选择--</option>
                    <option value="三国演义">三国演义</option>
                    <option value="水浒传">水浒传</option>
                    <option value="西游记">西游记</option>
                    <option value="红楼梦">红楼梦</option>
                </select>
                <p>你选择的小说是: {{story}}</p>
                
            </div>
            <script type="text/javascript">
                var vm=new Vue({
                    el:'.container',
                    data:{
                        txt:'haha',
                        sex:'',
                        like:true,
                        games:[],
                        story:''
                    }
                })
            </script>
        </body>
    </html>

    vue动态添加响应式属性

    注意:只有Vue实例被创建时data中存在的属性才是响应式的,后来新增的属性不会触发任何的视图更新的,你可以将后来要增加的属性先添加到data中,并设置其初值,比如:0、''、null。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <!--<div id="div1">
                姓名:{{name}} <br />
                年龄:{{age}} <br />
                <button @click="setAge1()">设置年龄</button>
            </div>-->
              <!--
                  对于已经创建的实例,Vue 不能动态添加根级别的响应式属性。
                  但是,可以使用 Vue.set(object, key, value) 方法向嵌套对象添加响应式属性。
              -->
             
            <div id="div2">
                姓名:{{player.name}} <br />
                年龄:{{player.age}} <br />
                球队:{{player.club}} <br />
                年龄:{{player.no}} <br />
                <button @click="addProperty()">动态添加属性</button>
            </div>
            <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
            <script type="text/javascript">
    //            var vm1=new Vue({
    //                el:'#div1',
    //                data:{
    //                    name:'michael'
    //                },
    //                methods:{
    //                    setAge1:function  () {
    //                        vm1.age=41;//在Vue实例创建后,无法data中直接添加根属性,但可以在已存在的根属性中动态添加新属性,也不能直接添加,应该使用Vue.set(vm2.player,'age',41)这种方式来添加
     // } // } // }) 
      
            var vm2=new Vue({
               el:
    '#div2',
              data:{ player:{ name:
    'kobe' } },
              methods:{ addProperty:
    function ()
                    {
                      
    //vm2.player.age=41;//这种添加属性,视图不会更新。
                      Vue.set(vm2.player,
    'age',41);//动态添加一个属性
                      vm2.player
    =Object.assign({},vm2.player,{club:'chicago',no:23});//动态添加多个属性
                    }
                   }
             })

          </script>
      
      </body>

    </html>
  • 相关阅读:
    EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之_关于接口调用常见的一些问题(401 Unauthorized)
    EasyNVR H5直播流媒体解决方案前端构建之:如何播放自动适配RTMP/HLS直播播放
    EasyNVR RTSP摄像机转HLS直播服务器中使用Onvif协议控制预置位
    EasyNVR RTSP摄像机HLS直播服务器中使用Onvif协议获取设备快照
    EasyNVR无插件直播服务器如何使用ffmpeg实现摄像机快照功能的
    EasyNVR流媒体服务器接入EasyDSS云视频平台快照上传实现
    EasyDSS RTMP流媒体服务器的HTTP接口query url的C++实现方法
    EasyDSS高性能流媒体服务器前端重构(五)- webpack + vue-router 开发单页面前端实现按需加载
    EasyDSS高性能流媒体服务器前端重构(六)- webpack-dev-server 支持手机端访问
    EasyNVR RTSP转HLS(m3u8+ts)流媒体服务器前端构建之:bootstrap-datepicker日历插件的实时动态展现
  • 原文地址:https://www.cnblogs.com/beast-king/p/9569106.html
Copyright © 2011-2022 走看看