zoukankan      html  css  js  c++  java
  • vue(一)

    1.基本架构

    <head>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><!--导入vue-->
    <script type="text/javascript"> window.onload=function () { app=new Vue({//创建vue对象 el:'#msgDiv',//设置要渲染的根元素 data:{ age:50 } });//实例化MVVM的管理对象 } </script>
    </head>
    <body>
    <!--如果要想使用Vue.js开发一定要有一个层进行Vue代码的编写-->
    <div id="msgDiv">
      {{age>18? 成年了:小屁孩}}//三目运算符
    </div>
    </body>

    2.判断语句:

    <div id="msgDiv">
            <p>请输入年龄:<input type="number" v-model="age"></p>
            <p v-if="age>0&&age<18">我还小</p>
            <p v-else-if="age>=18&&age<=50">我成年长大了</p>
            <p v-else="age>50">我老了</p>
        </div>
    

      当使用“v-if”语句处理的时候,如果发现条件不满足,那么对于语句所在的元素也会一起消失掉,如果现在希望条件不满足的时候,元素也会正常显示,则可以使用“ v-show”语句,是基于CSS的显示或隐藏控制。

    3.v-show数据渲染

    <div id="msgDiv">
            <p v-show="age">50">我老了</p>
    </div>
    

     此时从控制台的elements下可以发现,当判断内容不满足的时候,元素的内容依然还会存在,只不过为其追加了一个层的隐藏处理。

    4.v-for循环渲染:v-for语句的基本语法形式:v-for="迭代对象 in 集合"

    说明:在整个的 Vue. js里面与原始的开发框架最大的不同是在于其可以实现一个独立的wEB前端运行机制,所以如果要想获取后

    端的数据内容,那么就需要通过JsON的形式进行数据的传输,那么一旦程序接收到了JSON数据之后肯定要对数据进行解析执

    行,例如:如果现在接收到了一组的部门结构的JSON数据,则就需要采用循环的方式进行内容的显示。

      ● 基本渲染(以JSON数组的方式出现)

     window.onload=function () {
                app=new Vue({
                    el:'#msgDiv',
                    data:{
                        depts:[//表示一组dept数据
                            {'deptno':10,'dname':'财务部','loc':'上海'},
                            {'deptno':20,'dname':'技术部','loc':'深圳'},
                            {'deptno':30,'dname':'管理部','loc':'北京'}
                        ]
                    }
                });//实例化MVVM的管理对象
            }
    
    
    <!--分割线-->
    <div id="msgDiv">
            <table>
                <thead><tr><th>部门编号</th><th>部门名称</th><th>部门位置</th></tr></thead>
                <tbody>
                <tr v-for="dept in depts">
                    <td>{{dept.deptno}}</td>
                    <td>{{dept.dname}}</td>
                    <td>{{dept.loc}}</td>
                </tr>
                </tbody>
            </table>
            <p v-show="age>50">我老了</p>
        </div>
    

      ● 索引数据

    <div id="msgDiv">
            <table>
                <thead><tr><th>部门编号</th><th>部门名称</th><th>部门位置</th></tr></thead>
                <tbody>
                <tr v-for="(dept,index) in depts">
                    <td>{{index}}</td>  <!--显示索引-->
                    <td>{{dept.deptno}}</td>
                    <td>{{dept.dname}}</td>
                    <td>{{dept.loc}}</td>
                </tr>
                </tbody>
            </table>
      </div>
    

      ● 下拉框展示

    <div id="msgDiv">
            <select id="dept">
                <option v-for="dept in depts" id="{{dept.deptno}}">{{dept.dname}}-{{dept.loc}}</option>
            </select>
    </div>
    

    5.v-bind 数据绑定

    说明:在任何的一个HTML元素里面包含有一系列的配置属性,那么这些属性的内容都是可以被绑定的,只需要在data元素里定义有相应的数据信息,这些信息可以直接绑定到属性之中。

      ● 属性绑定:将Vue对象中的数据内容直接绑定在HTML元素上。 

         window.onload=function () {
                app=new Vue({
                    el:'#msgDiv',
                    data:{
                        message:"这是一张Docker的软件LOGO"
                    }
                });//实例化MVVM的管理对象
            }
    <!--分割线-->
      <body>
       <div id="msgDiv">
      <img src="images/docker.png" v-bind:title="message"/><!--也可以将左边这一行写成右边的样式,右边这种格式最为常用--><img src="images/docker.png" :title="message"/>
          </div>
      </body>
    注意:此语句与"v-for"语句有所不同,主要的原因在于现在是一个独立的元素,而使用"v-for"的结构是在一个Vue.js命令结构里面,
    所以此时不能采用{{message}}语法进行属性的定义,所以以下的操作是无法进行绑定处理的:
    <img src="images/docker.png" v-bind:title="{{message}}">

      ● 循环绑定:本次通过绑定的形式为每一个表格行设计一个id。

    window.onload=function () {
    app=new Vue({
    el:'#msgDiv',
    data:{
    id:'deptTable',
    trPrefix:'dept-',
    depts:[
    {'deptno':10,'dname':'财务部','loc':'上海'},
    {'deptno':20,'dname':'技术部','loc':'广州'},
    {'deptno':30,'dname':'研发部','loc':'深圳'}
    ]
    }
    });//实例化MVVM的管理对象
    }
    ==================================================================================================
    <div id="msgDiv"> <table id="id"> <thead><tr><th>NO.</th><th>部门编号</th><th>部门名称</th><th>部门位置</th></tr></thead> <tbody> <tr v-for="(dept,index) in depts" :id="trPrefix+dept.deptno"> <td>{{index}}</td> <td>{{dept.deptno}}</td> <td>{{dept.dname}}</td> <td>{{dept.loc}}</td> </tr> </tbody> </table> </div>

    6. v-on事件绑定:绑定的函数如果不传参数直接写函数名称即可也可以加括号,如果传参数就要加括号了

      ● 绑定单击事件:如果要进行事件的绑定在 Vue.js需要考虑两个部分,一个是事件产生处理函数,一个是事件类型。

    window.onload=function () {
                app=new Vue({
                    el:'#msgDiv',
                    data:{  //数据绑定
                        message:"跟小李老师学java"
                    },
                    methods:{   //定义所有的操作函数
                        changeMessage:function(newMessage){
                            console.log('原始数据内容'+this.message);
                            console.log('修改数据内容'+newMessage);
                            this.message=newMessage;//修改数据内容
                        }
                    }
                });//实例化MVVM的管理对象
     }
    =====================================
    <div id="msgDiv">
            <p>{{message}}</p>
            <button v-on:click="changeMessage('下雨了,准备收衣服')">修改数据内容</button>
    </div>
    

      ● 简化定义:在 vue.js里面由于事件的绑定比较常见,所以如果每一次都使用“v-on:xxx”的形式处理的话会比较繁琐,那么在 Vue.js里面提供了简化的数据绑定的处理操作,格式为“@事件名称”

    就可以将上面的按钮那一行换成下面这一行 
    <button @click="changeMessage('下雨了,准备收衣服')">修改数据内容</button>
    

      ● ES标准:在ES语法里面可以对事件进行各种的控制:下面这几个东西的具体作用可打开控制台在console下观察

        ● ".stop":阻止事件冒泡操作;

        ● ".prevent":提交事件不进行页面的重新加载;

        ● ".self":只在本元素上进行事件的触发;

        ● ".once":此事件只执行一次。

      如下代码:这个时候的事件只能够执行一次,第二次将无法继续执行

    <div id="msgDiv">
            <p>{{message}}</p>
            <button @click.once="changeMessage('下雨了,准备收衣服')">修改数据内容</button>
     </div>
    

    7.数组绑定

     window.onload=function () {
                app=new Vue({
                    el:'#msgDiv',
                    data:{  //数据绑定
                        inputDeptno:'99',
                        inputDname:'测试部门',
                        inputLoc:'测试文职',
                        depts:[//表示一组dept数据
                            {'deptno':10,'dname':'财务部','loc':'上海'},
                            {'deptno':20,'dname':'技术部','loc':'深圳'},
                            {'deptno':30,'dname':'管理部','loc':'北京'}
                        ]
                    },
                    methods:{   //定义所有的事件处理函数
                        reverseArray:function(){
                            this.depts.reverse();//数组反转
                        },
                        addArray:function () {
                            this.depts.push({'deptno':this.inputDeptno,'dname':this.inputDname,'loc':this.inputLoc});
                            this.resetForm();//调用本地的函数(自己手写的函数),进行数据内容的清空
                        },
                        deleteArray:function(ind){//删除数组内容
                            this.depts.splice(ind,1);//第一个参数为索引,第二个参数为删除个数,如果不加第二个参数,删除的是当前索引及索引下面的所有行,
                                 //加上第二个参数即表示删除当前索引下的n行,n为第二个参数 }, resetForm:function () {  //表单重置 this.inputDeptno=''; this.inputDname=''; this.inputLoc=''; } } });//实例化MVVM的管理对象 } ============================================ <div id="msgDiv"> <div id="deptForm" style="float: left;50%"> 部门编号:<input type="text" v-model="inputDeptno"><br> 部门名称:<input type="text" v-model="inputDname"><br> 部门位置:<input type="text" v-model="inputLoc"><br> <button @click="addArray()">添加部门</button><button @click="resetForm()">表单重置</button> </div> <div id="deptList" style="float:left; 50%"> <table> <thead><tr><th>No.</th><th>部门编号</th><th>部门名称</th><th>部门位置</th><th>操作</th></tr></thead> <tbody> <tr v-for="(dept,index) in depts"> <td>{{index}}</td> <td>{{dept.deptno}}</td> <td>{{dept.dname}}</td> <td>{{dept.loc}}</td> <td><button @click="deleteArray(index)">删除</button></td> </tr> </tbody> </table><p> <button @click="reverseArray">数组反转</button></p></div> </div>

    8.Vue.js结合JQuery实现跨域访问:

    9.表单控件绑定处理:

      ● 双向绑定:观察当前的双向绑定处理:

    window.onload = function() {
                app = new Vue({
                    el: '#msgDiv',		// 设置要进行渲染的根元素
                    data: {
                        message: '嗨皮的学习,过好每一天'
                    }
       }) ;	// 实例化MVVM的管理对象
    ===================================================
    <div id="msgDiv">
    <p>消息内容:{{message}}</p>
    请输入内容:<input v-model="message">
    </div>

      ● 延迟修改:默认情况下,只要对表单中的内容进行了修改,双向绑定之后都会将修改的内容立即反应到输出环境上,但是在一些情况下可能不希望有这样的立即反应效果(变更为“ change”事件)。

    请输入内容:<input v-model.lazy="message">
    

      ● 空格处理:在很多时候用户输入数据的情况下,有可能会岀现有前后有空格的问题,为了解决空格的输入问题,在进行绑定的时候可以通过“trim”配置属性进行定义;

    请输入内容:<input v-model.trim="message">

      ● 数字处理:

    window.onload = function() {
    			app = new Vue({
    				el: '#msgDiv',		// 设置要进行渲染的根元素
    				data: {
    					count: '100'	// 这个地方尽管输入的不是数字,但是也不会出错
    				}
    			}) ;	// 实例化MVVM的管理对象
    ==============================
    <div id="msgDiv">
    	<p>当前计数结果:{{count}}</p>
    	请输入数字:<input v-model="count" type="number">
    </div>
    

      ● 日期数据:如果现在匹配的表单元素的类型是一个日期型,即便给出的是字符串也可以实现数据类型的自动转换。

    window.onload = function() {
                app = new Vue({
                    el: '#msgDiv',		// 设置要进行渲染的根元素
                    data: {
                        birthday: '1886-10-18'// 给定的是字符串
                    }
                }) ;	// 实例化MVVM的管理对象
            }
    ===========================================
    <div id="msgDiv">
    <p>马二老的生日:{{birthday}}</p>
    请输入生日:<input v-model="birthday" type="date">
    </div>

      ● 数学计算:下面定义两个输入的数据,但是最终一定需要这两个输入数据的累加,于是这个累加就可以成为一个结算结果。

    window.onload = function() {
                app = new Vue({
                    el: '#msgDiv',		// 设置要进行渲染的根元素
                    data: {
                        numa:0,
                        numb:0
                    },
                    computed:{  //表示计算的结果同样可以进行数据的渲染
                        addResult:function () {
                            return parseInt(this.numa)+parseInt(this.numb);//这里必须要采用parseInt(值)先将字符串转换成int,如果不使用parseInt()的话,
                                               //会直接进行字符串相加(字符串可以直接使用"+"进行连接),即6+0=60 }, subResult:function () { return this.numa-this.numb;//这里就不需要使用parseInt(),因为减法符号"-"只有在运算中使用 } } }) ; // 实例化MVVM的管理对象 } ========================== <div id="msgDiv"> <p>请输入第一个数字:<input type="number" v-model="numa"></p> <p>请输入第二个数字:<input type="number" v-model="numb"></p> <p>两个数字的和:{{addResult}}</p> <p>两个数字的差:{{subResult}}</p> </div>

      ● setter与getter:

    window.onload = function() {
                app = new Vue({
                    el: '#msgDiv',		// 设置要进行渲染的根元素
                    data: {
                        firstName:'张',
                        lastName:'大枪'
                    },
                    computed:{  //表示计算的结果同样可以进行数据的渲染
                        fullName: {
                            get:function () {  
                                return this.firstName+this.lastName;
    
                            },
                            set:function (inputFullName) {
                                this.firstName=inputFullName.slice(0,1);//截取名字
                                this.lastName=inputFullName.slice(1);//截取名字
                            }
                        }
                    }
                }) ;	// 实例化MVVM的管理对象
     }
    ==========================================
    <div id="msgDiv">
        <p>请输入完整姓名:<input type="text" v-model="fullName"></p>
        <p>姓:<input type="text" v-model="firstName"></p>
        <p>名:<input type="text" v-model="lastName"></p>
    </div>
    

    10.绑定表单控件:

      ● 绑定文本域:

     window.onload = function() {
                app = new Vue({
                    el: '#msgDiv',		// 设置要进行渲染的根元素
                    data: {
                        message:''
                    }
                }) ;	// 实例化MVVM的管理对象
     }
    =========================================
    <div id="msgDiv">
    <div id="inputDiv" style="float:left; 50%;">
    <textarea v-model="message" placeholder="可以输入多行文本" rows="10" cols="50"></textarea>
    </div>
    <div id="showDiv" style="float: left; 50%">
    <p style="white-space: pre-line">{{message}}</p><!--可以展示多行文本-->
    </div>
    </div>

      ● 绑定单选钮:在进行绑定的时候一组单选钮绑定的数据名称要相同

    window.onload = function() {
                app = new Vue({
                    el: '#msgDiv',		// 设置要进行渲染的根元素
                    data: {
                        sex:'男'
                    }
                }) ;	// 实例化MVVM的管理对象
            }
    =========================
    <div id="msgDiv">
        <div id="inputDiv" style="float:left; 50%;">
            <input type="radio" value="男" v-model="sex">男<!--数据名称一致为sex,必须一致-->
            <input type="radio" value="女" v-model="sex">女
        </div>
        <div id="showDiv" style="float: left; 50%">
            <p style="white-space: pre-line">{{sex}}</p>
        </div>
    </div>
    

      ● 绑定复选框:复选框的组件是一套数组的内容,所以如果要想进行复选框的内容接收,则必须考虑使用数组定义数据类型。

     window.onload = function() {
                app = new Vue({
                    el: '#msgDiv',		// 设置要进行渲染的根元素
                    data: {	// 此处定义了数据的绑定
                        insts: []	// 必须为数组
                    }
                }) ;	// 实例化MVVM的管理对象
            }
    ======================
    <div id="msgDiv">
        <div id="inputDiv" style="float: left ;  50%">
            <input type="checkbox" value="看书" v-model="insts">看书<br><!--数据名称一致为insts,必须一致-->
            <input type="checkbox" value="运动" v-model="insts">运动<br>
            <input type="checkbox" value="书法" v-model="insts">书法<br>
            <input type="checkbox" value="艺术" v-model="insts">艺术<br>
            <input type="checkbox" value="电影" v-model="insts">电影<br>
        </div>
        <div id="showDiv" style="float: left ;  50%">
            <p style="white-space: pre-line">您的兴趣是:{{insts}}</p>
        </div>
    </div>
    

      ●复选框锁定状态:由于在 Vue.js里面复选框可以直接和布尔类型的数据产生关联,所以对于用户锁定或活跃的状态切换就会比较容易了。

    window.onload = function() {
                app = new Vue({
                    el: '#msgDiv',		// 设置要进行渲染的根元素
                    data: {	// 此处定义了数据的绑定
                        name:'张三',
                        lock:true   //锁定
                    },
                    computed:{
                        status:{
                            get:function () {
                                return this.lock ? "锁定":"活跃";
                            }
                        }
                    }
                }) ;	// 实例化MVVM的管理对象
            }
    =======================
    <div id="msgDiv">
        <div id="inputDiv" style="float: left ;  50%">
            <input type="checkbox" value="看书" v-model="lock">看书<br>
        </div>
        <div id="showDiv" style="float: left ;  50%">
            <p style="white-space: pre-line">姓名:{{name}}</p>
            <p style="white-space: pre-line">锁定状态:{{status}}</p>
        </div>
    </div>
    

      

  • 相关阅读:
    Rotate Image
    Color Sort
    Chapter 3: Binary Tree
    Different Ways to Add Parentheses
    最短路径问题
    Longest Palindromic Substring
    Word Break
    PCA和SVD简述
    Set Matrix Zeros
    星级评价
  • 原文地址:https://www.cnblogs.com/wxl123/p/11280161.html
Copyright © 2011-2022 走看看