Vue指令 £神魔★判官ぃ 2021-07-24 19:31 520阅读 0赞 # Vue指令 # ## 1. watch监听 ## **在vue中watch就是时时刻刻的监听绑定的这个data模型数据,当这个数据发生变化的时候,watch就会被触发,自动的执行其中的逻辑** 代码: <div id="demodiv"> <input type="text" v-model="text">{ {text}} </div> <script> new Vue({ el:"#demodiv", data:{ text:"这是watch测试" }, methods: { }, watch: { text(newval,oldval){ console.log(newval+"-----"+oldval); } } }) </script> 案例: <!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> <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css"> </head> <body> <!-- 1.重置功能 点击之后清空输入框 --> <!-- 2.写一些模拟数据先把表格用模拟数据生成 --> <!-- 3.添加功能的完成 --> <!-- 4.设置当没有输入内容的时候添加不能点击 --> <!-- 5.设置好模态框 --> <!-- 6.删除功能 --> <!-- 6-1删除单个 当点击删除按钮的时候 把当前按钮这一行的下标传给一个变量 --> <!-- 6-2在模态框的删除按钮上添加一个点击事件 调用删除的函数并且 把delnum当成实参传入 --> <div id="demodiv"> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> <h4 class="modal-title">删除</h4> </div> <div class="modal-body"> <p>亲^_^,您确定要删除吗?</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal" @click="del(delnum)">删除</button> <button type="button" class="btn btn-primary" data-dismiss="modal">取消</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div><!-- /.modal --> <div class="container"> <input type="text" class="form-control" placeholder="请输入用户名" v-model="inputa"><br> <input type="text" class="form-control" placeholder="请输入年龄" v-model="inputb"><br> <button type="button" class="btn btn-success" @click="add()" v-bind:disabled="bool">添加</button> <button type="button" class="btn btn-info" v-on:click="chongzhi()">重置</button> <h1>用户信息收集表</h1> <table class="table table-bordered table-hover"> <thead> <tr> <th>序号</th> <th>名字</th> <th>年龄</th> <th>操作</th> </tr> </thead> <tbody> <tr v-for="(v,i) in obj"> <td>{ {i}}</td> <td>{ {v.name}}</td> <td>{ {v.age}}</td> <td> <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#myModal" @click="delnum=i">删除</button> </td> </tr> <tr v-if="obj.length>0"> <td colspan="4" align="right"> <button type="button" class="btn btn-info" data-toggle="modal" data-target="#myModal" @click="delnum=-1">删除全部</button> </td> </tr> <tr v-else> <td colspan="4" align="center"> <span>暂无数据...</span> </td> </tr> </tbody> </table> </div> </div> </body> </html> <script src="node_modules/vue/dist/vue.min.js"></script> <script src="node_modules/jquery/dist/jquery.min.js"></script> <script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script> <script> new Vue({ el: "#demodiv", data: { inputa: "", inputb: "", obj: [{ name: "王大锤", age: 23 }, { name: "王大锤", age: 23 }, { name: "王大锤", age: 23 }, { name: "王大锤", age: 23 }, { name: "王大锤", age: 23 } ], bool: true, delnum:-2 }, methods: { chongzhi() { this.inputa = ""; this.inputb = ""; }, add() { this.obj.push({ name: this.inputa, age: this.inputb }); this.inputa = ""; this.inputb = ""; }, del(delnum) { console.log(delnum); if(delnum==-1){ this.obj=[]; }else{ this.obj.splice(delnum,1); } } }, watch: { //监听两个输入框的值 inputa() { if (this.inputa != "" && this.inputb != "") { this.bool = false; } else { this.bool = true; } }, inputb() { if (this.inputa != "" && this.inputb != "") { this.bool = false; } else { this.bool = true; } } } }) </script> ## 2. 事件对象 ## 1. 语法: **<div @click=‘fn($event)’>< /div>** *在上述对象中,event为事件对象* 2. 作用:记录事件相关的信息 <div id="demodiv"> <button @click="fun($event)">点我啊</button> <input type="text" @keydown="func($event)"> </div> <script> new Vue({ el:"#demodiv", methods:{ fun(e){ console.log(e); }, func(e){ if(e.keyCode==65){ console.log("么么哒"); } } } }) </script> ## 3. 事件修饰符 ## 1. 概念:v-on指令提供了事件修饰符来处理DOM事件细节 2. 语法:@click.修饰符=‘fn()’ 3. 常见的按键修饰符: .up, .down, .ctrl, .enter, .space等等 ### 1. prevent修饰符 ### **阻止事件的默认行为(submit提交表单)** ### 2. stop修饰符 ### **阻止事件冒泡** *注意:* 修饰符可以串联使用 案例: <div id="demodiv"> <input type="text" v-on:keydown.down="fun()"> <form action="http://www.baidu.com" method="GET"> <input type="submit" value="提交" @click.prevent="funa()"> </form> <div @click="funb()"> 哪吒之魔童转世 <input type="button" value="购买" @click.stop="func()"> </div> </div> <script> new Vue({ el:"#demodiv", data:{ input:"" }, methods: { fun(){ console.log("么么哒"); }, funa(){ console.log("提交"); }, funb(){ console.log("我是div"); }, func(){ console.log("我是button"); } } }) </script> ## 4. 计算属性 ## ### 1. 为什么要用计算属性 ### **板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护** <p>{ {text.toUpperCase().substr(2,1)}}</p> ### 2. 计算属性 ### 1. 概念: 顾名思义,首先它是一种属性,其次它有“计算”这个特殊性质。每次取得它的值得时候,它并不像普通属性那样直接返回结果,而是经过一系列的计算之后再返回结果。同时只要在它的当中里引用了 data 中的某个属性,当这个属性发生变化时,计算属性仿佛可以嗅探到这个变化,并自动重新执行。 2. 语法 computed: { 需要返回的数据: function () { return 处理操作 } } 1. 使用 //改造把数据转大写并且截取的例子 computed:{ demoText:function(){ return this.text.toUpperCase().substr(2,1); } } 或者: methods:{ textfun(){ return this.text.toUpperCase().substr(2,2) } } 1. 那么计算属性和方法有什么区别呢? * 计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。 * 方法绑定数据只要被调用,方法将总会再次执行函数。 * 计算属性相对于方法在处理特定场合下节省资源性能 * watch:可以监听模型数据 当模型数据改变的时候就会触发 * watch初始化的时候不会运行,只有数据被改变之后才会运行 ### 什么时候使用watch ### 1. 当需要在数据变化时执行异步或开销较大的操作时,watch这个方式是最有用的。 2. 计算属性与侦听器的区别: 1. 当watch监听的值发生改变就会被调用,watch可以在数据变化时做一些异步处理或者开销大的操作 2. 计算属性是计算依赖的值,当依赖的值发生改变才会触发。 案例: <div id="demodiv"> <p>{ {fun()}}</p> <p>{ {fun()}}</p> <p>{ {fun()}}</p> <p>{ {fun()}}</p> <p>{ {fun()}}</p> <p>{ {fun()}}</p> <h1>{ {newtext}}</h1> <h1>{ {newtext}}</h1> <h1>{ {newtext}}</h1> <h1>{ {newtext}}</h1> <h1>{ {newtext}}</h1> <h1>{ {newtext}}</h1> </div> <script> new Vue({ el: "#demodiv", data: { text: "0123456789" }, methods: { fun() { console.log("我是函数"); return this.text.toUpperCase().substr(3, 1); } }, // 计算属性 computed: { newtext() { console.log("我是计算属性"); return this.text.toUpperCase().substr(3, 1); } } }) </script>
相关 Vue指令 Vue指令 * v-text * v-html * v-show * v-if * v-else * v-else-if * v-for ... 迈不过友情╰/ 2024年04月17日 05:59/ 0 赞/ 88 阅读
相关 vue 指令 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> 谁借莪1个温暖的怀抱¢/ 2023年11月05日 00:52/ 0 赞/ 117 阅读
相关 Vue指令 一、Vue指令的规定 1. 所有的Vue指令必须以v-开头,后面带命令动词。 2. 指令的参数:v-指令动词.参数 3. 指令的修饰符:v-指令动词:修饰符 二 阳光穿透心脏的1/2处/ 2023年06月25日 11:29/ 0 赞/ 17 阅读
相关 Vue指令 v-text v-text的作用跟插值表达式是一样的,但是不同的地方在于:v-text会覆盖元素中原本的内容,插值表达式只会替换自己的这个占位符,不会把整个元素的内容清空 男娘i/ 2023年06月09日 07:59/ 0 赞/ 21 阅读
相关 Vue 指令 基本指令 (1)v-bind指令 语法格式1:单个语法格式 v-bind:attributeName=variable 以下是HTML代码: < 矫情吗;*/ 2023年06月06日 08:22/ 0 赞/ 21 阅读
相关 vue指令 总结 v-text v-text是一个渲染文本的指令 不能解析标签 会把标签当成字符串渲染在页面上 v-html v-html 也是一个渲染 电玩女神/ 2023年02月22日 13:56/ 0 赞/ 30 阅读
相关 vue指令 vue指令 一个正在努力爱好运动的前端 座右铭:越努力越幸运,越运动越健康,热爱编程,热爱运动。 -------------------- 文章目录 朱雀/ 2022年12月22日 06:12/ 0 赞/ 145 阅读
相关 vue指令 vue介绍 1.作者 尤雨溪(vue) \[阿里\] 3.0 2.vue概念 官网:[Vue.js][] 渐进式 JavaScript 框架 渐进式:主 偏执的太偏执、/ 2022年09月16日 06:05/ 0 赞/ 166 阅读
相关 Vue指令 本文笔记基于「千古壹号」的GitHub项目:https://github.com/qianguyihao/web 非商业用途自由转载,保持署名,注明出处! ------- 待我称王封你为后i/ 2021年11月17日 13:10/ 0 赞/ 438 阅读
相关 Vue指令 Vue指令 1. watch监听 在vue中watch就是时时刻刻的监听绑定的这个data模型数据,当这个数据发生变化的时候,watch就会被触发,自动的执行其中的 £神魔★判官ぃ/ 2021年07月24日 19:31/ 0 赞/ 521 阅读
还没有评论,来说两句吧...