当前位置: 首页 > news >正文

山西响应式网站建设设计杭州市建设工程信用网

山西响应式网站建设设计,杭州市建设工程信用网,百度竞价推广代运营公司,专业营销网站建设公司一、计算属性 1、计算属性的概念 计算属性是依赖于源数据(data或者属性中的数据)#xff0c;在元数据的基础上进行逻辑运算后得到的新的数据#xff0c;计算属性要依赖于源数据#xff0c;源数据数据变化计算属性也会变化 2、计算属性的语法 在vue2中使用computed这个选…一、计算属性 1、计算属性的概念 计算属性是依赖于源数据(data或者属性中的数据)在元数据的基础上进行逻辑运算后得到的新的数据计算属性要依赖于源数据源数据数据变化计算属性也会变化 2、计算属性的语法 在vue2中使用computed这个选项完成计算属性的 templatedivh2购物车/h2tabletheadtrtd编号/tdtd商品/tdtd数量/tdtd价格/tdtd小计/td/tr/theadtbodytr v-foritem in filterShopcartList :keyitem.idtd{{item.id}}/tdtd{{item.name}}/tdtdbutton clickitem.num---/button{{item.num}}button clickitem.num/button/tdtd{{item.price}}/tdtd{{(item.price*item.num).toFixed(2)}}/td/tr/tbodytfoottrtd colspan5总价{{getTotalPrice}}/td/tr/tfoot/table/div /template ​ script export default {data(){return{shopcartList:[{id:1001,name:红富士苹果,price:3.69,num:1},{id:1002,name:威化饼干,price:1.69,num:1},{id:1003,name:康师傅方便面,price:5.21,num:1}]}},computed:{filterShopcartList:{//get方法是为了完成获取计算值后的属性get(){return this.shopcartList.filter(itemitem.num0)}},getTotalPrice:{get(){return this.filterShopcartList.reduce((prve,cur)prvecur.price*cur.num,0).toFixed(2)}}} } /script ​ styletable{border-collapse: collapse;}td{border:1px solid #999;padding: 10px;} /style 2、计算属性的简写形式 1计算属性的标准写法很少用需要更改原数据时才用 computed:{计算属性名称{get{return 新的结果}}} 2计算属性的简单写法常用 computed:{计算属性名称{return 新的结果}} templatedivh2购物车/h2tabletheadtrtd编号/tdtd商品/tdtd数量/tdtd价格/tdtd小计/td/tr/theadtbodytr v-foritem in filterShopcartList :keyitem.idtd{{item.id}}/tdtd{{item.name}}/tdtdbutton clickitem.num---/button{{item.num}}button clickitem.num/button/tdtd{{item.price}}/tdtd{{(item.price*item.num).toFixed(2)}}/td/tr/tbodytfoottrtd colspan5总价{{getTotalPrice}}/td/tr/tfoot/table/div /template ​ script export default {data(){return{shopcartList:[{id:1001,name:红富士苹果,price:3.69,num:1},{id:1002,name:威化饼干,price:1.69,num:1},{id:1003,name:康师傅方便面,price:5.21,num:1}]}},computed:{filterShopcartList:{//get方法是为了完成获取计算值后的属性get(){return this.shopcartList.filter(itemitem.num0)}},getTotalPrice:{get(){return this.filterShopcartList.reduce((prve,cur)prvecur.price*cur.num,0).toFixed(2)}}} } /script ​ styletable{border-collapse: collapse;}td{border:1px solid #999;padding: 10px;} /style 3、计算属性的缓存特性 计算属性具有缓存作用在原数据不改变的情况下计算属性多次调用只有第一次进行计算后续都是从缓存中获取数据如果源数据变化之后计算属性就会重新进行计算。 4、setter和getter方法 templatedivdivfirstName:span{{firstName}}/span/divdivmiddleName:span{{middleName}}/span/divdivlastName:span{{lastName}}/span/divdivfullName:span{{name}}/span/divbutton clicknamezhang san fengchangeFullName/button/div /template ​ script export default {data(){return{firstName:zhai,middleName:ji,lastName:zhe}},computed:{name:{get(){return this.firstName this.middleName this.lastName},set(val){//计算属性是不能改的console.log(val,val);this.firstNameval.split( )[0]this.middleNameval.split( )[1]this.lastNameval.split( )[2]}}} } /script ​ style langscssdiv{span{color: blue;}} /style 三、侦听器 1、侦听器的概念 在vue中当我们对data的数据或者计算属性进行变化的时候专门一个选项可以随时监听data或者计算属性的变化从而完成相应的逻辑 2、监听器的语法 监听器的语法有两种形式 简写写法 watch:{//newval:变化之后的数据//oldval:变化之前的数据监视的数据名(newval,oldval){ ​} } 案例监视计数器num的变化 export default {data(){return{num:0}},watch:{num(newval,oldval){console.log(newval,oldval);}} } 监听器的标准写法 语法 watch:{监听的数据名:{//监听的逻辑处理方法handler(newval,oldval){ ​},//是否深度监听deep:true|false,//是否立即监听immediate:true|false}} 案例使用标准写法完成计数器的监听 export default {data(){return{num:0}},watch:{num:{handler(newval,oldval){console.log(newval,oldval);}}} } 3、监听对象中属性变化 如果要监听对象中属性的变化可以有两种方式 第1种方式通过对象名.属性名的方式 templatedivdiv{{obj.a}} button clickobj.aa/button/divdiv{{obj.b}} button clickobj.ba/button/divdiv{{obj.c}} button clickobj.ca/button/div/div /template ​ script /* watch:{对象名.属性名(newval,oldval){}} */ export default {data(){return{obj:{a:10,b:20,c:30}}},watch:{obj.a(newval,oldval){console.log(obj.a,newval,oldval);},obj.b(newval,oldval){console.log(obj.b,newval,oldval);},obj.c(newval,oldval){console.log(obj.c,newval,oldval);}} } /script 如上这种方式如果属性过多它就太麻烦了 方式2通过深度监听的方式来完成对对象的监听 export default {data(){return{obj:{a:10,b:20,c:30}}},computed:{//新定义一个计算属性newObj,该计算属性的作用是将data对象中的obj做一个深拷贝newObj(){//这种深拷贝对于如果一个对象中有函数获知时间类型是无法进行深拷贝//JSON.stringify将JSON格式字符串对象转换为js对象(属性名没有双引号)//JSON.parse将JSON字符串转为对象return JSON.parse(JSON.stringify(this.obj))}},watch:{//obj:要监听的对象newObj:{//执行监听的具体钩子函数handler(newval,oldval){console.log(newval,oldval);},//开启深度监听deep:true}} } 4、立即监听设置 通过对watch中 immediate设置为true就会开启立即监听 watch:{//obj:要监听的对象newObj:{//执行监听的具体钩子函数handler(newval,oldval){console.log(newval,oldval);},//开启深度监听deep:true,//开启立即监听immediate:true}} 四、过滤器 1、什么是过滤器 vue中定义过滤器主要用于文本格式化具体可以完成如下功能 日期的格式化 货币格式化 小数点精确度的截取 大小写首字母转换等 注意vue2中过滤器vue3中将过滤去掉了 2、过滤器的分类 按照作用范围可以将过滤器分成两大类 全局过滤器针对项目中所有组件都有用 私有过滤器局部过滤器只针对当前组件有效 2.1、定义私有私有过滤器 定义私有过滤器 export default{data(){},methods{},//filters:配置对象filters:{过滤器的名称(参数){}} } 如何调用过滤器 使用过滤器的时候可以在两种情况下使用第1种情况在插值表达式中使用第2种在属性中使用 在插值表达式中使用 {{message|过滤器的2名称|过滤器2的名称}} message代表是输出数据对象|这个竖杠表示的就是一个管道符使用这个符号将插值表达式和过滤器连接在一起 使用v-bind在属性中使用 div v-bind:idid的变量|过滤器的名称/div 案例通过身份证获取格式化出生日期 templatedivdiv身份证号:{{idcard}}/divdiv生日:{{idcard|birthday}}/div/div /templatescript export default {data(){return{idcard:610122198404084030}},filters:{birthday(val){return val.slice(6,10)-val.slice(10,12)-val.slice(12,14)}} } /script 2.2、定义全局过滤器 定义全局过滤器的语法 Vue.filter(过滤器的名称,function(val){ return result}) 定义全局过滤器的步骤 在src下创建一个filters的文件夹 在src/filters文件夹下定义过滤器的js文件 //首先先导入Vue import Vue from vue Vue.filter(capitalize,function(val){return val.charAt(0).toUpperCase()val.slice(1) }) 在main.js中导入定义全局过滤器 import Vue from vue import App from ./App.vue import ./filters/capitalize //在此处导入Vue.config.productionTip false new Vue({render: h h(App), }).$mount(#app) 在组件中可以使用|的方式来调用过滤器 五、自定义指令 之前我们已经接触过指令在但是我们接触这些指令都是vue提供的内置指令每一种指令有着不同的用途如果开发者要想自定义指令就可以使用自定义指令完成不同功能的封装 1、自定义指令的分类 全局自定义指令可以作用域全局所有的组件 私有自定义指令只能作用域该组件 1私有自定义指令的语法 templatedivh2 v-mycolorcolor clickcolor#0000ffHello Giles/h2!-- h1 v-mycolorcolor#ff0000Hello Giles/h1h1 v-mycolorcolor#00ff00Hello Giles/h1 --/div /templatescript export default {data(){return{color:orange}},directives:{mycolor:{/*当我们将指令绑定到标签的时候会调用一次在此方法中完成初始化功能el:所绑定指令(自定义指令)所在的DOM元素bindings:自定义指令的配置对象modifiers:指令的修饰符name:指令的名称(不含v-和修饰符的)rawName:指令的全名(v-的前缀和修饰符)value:指定的所传递的值vNode:更新之后的虚拟DOM节点对象oldVnode:更新之前的虚拟DOM节点*/bind(el,bindings,vNode,oldVnode){console.log(bindings,bindings.value);el.style.colorbindings.value},componentUpdated(el,bindings,vNode,oldVnode){console.log(vNode,vNode);console.log(oldVnode,oldVnode);el.style.colorbindings.valueel.innerHTMLHello Woniuxy}}} } /scriptstyle/style 2全局自定义指令的定义步骤 步骤 在src目录下创建directives文件夹然后在文件夹下创建自定义指令 import Vue from vue Vue.directive(ellipses,{bind(el,bindings){let w;if(bindings.value){wbindings.value.width}else{w100px}el.style.widthwel.style.whiteSpacenowrapel.style.textOverflowellipsisel.style.overflowhidden} }) 在main.js中引入自定义指令 import Vue from vue import App from ./App.vue import ./directives/ellipses Vue.config.productionTip false new Vue({render: h h(App), }).$mount(#app) 在组件中应用 div v-ellipses白日依山尽黄河入海流欲穷千里目,更上一层楼/divdiv v-ellipses{width:150px}白日依山尽黄河入海流欲穷千里目,更上一层楼/divdiv v-ellipses{width:200px}白日依山尽黄河入海流欲穷千里目,更上一层楼/div 2、自定义指令的案例 1完成水印功能 import Vue from vue Vue.directive(waterMarker,{bind(el,bindings){let canvsdocument.createElement(canvas)//设置画布的大小canvs.width250canvs.height150//获取画笔的上下文对象let cxtcanvs.getContext(2d)cxt.rotate((20*Math.PI)/180)cxt.fillStylebindings.value.colorcxt.font48px 宋体cxt.fillText(bindings.value.content,canvs.width/10,canvs.height/2)el.appendChild(canvs)} }) 2完成画板功能 import Vue from vue /*Vue.directive是用于定义全局指令的参数有两个参数1自定义指令名称参数2自定义指令的配置对象 */ Vue.directive(draw,{bind(el,bindings){console.log(bindings.value);//创建Canvas对象let cvsdocument.createElement(canvas)//给画布设置宽和高cvs.widthbindings.value.widthcvs.heightbindings.value.height//获取上下文对象let cxtcvs.getContext(2d)//给画笔绑定onmousedowncvs.onmousedownfunction(e){//获取鼠标点下去的坐标cxt.moveTo(e.pageX-this.offsetLeft,e.pageY-this.offsetTop)//当鼠标移动时候cvs.onmousemovefunction(e){cxt.lineTo(e.pageX-this.offsetLeft,e.pageY-this.offsetTop)cxt.stroke()}cvs.onmouseupfunction(){cvs.onmousemovenull}}el.appendChild(cvs)} })
http://www.dnsts.com.cn/news/55654.html

相关文章:

  • 网站上的广告是怎么做的青岛气象站建站时间
  • 南宁网站建设方案服务太原市建设厅网站
  • 企业创建网站的途径深圳新星公司官网
  • 怎么建立网站网址百度渠道开户哪里找
  • 广州模板建站系统wordpress get users
  • 莘县网站建设电话广州开发网站
  • 名雕装饰公司的口碑怎样aso优化软件
  • 哪些网站可以做店淘客杭州本地网站
  • 国外商城网站设计seo公司官网
  • 莆田制作网站企业公司免费网页怎么制作
  • 外贸建站 厦门wordpress自动评论
  • 网站什么做的企业所得税怎么算利润
  • 可以做免费广告的网站有哪些wordpress 360 vr
  • 淄博高端网站设计wordpress怎么去掉主题的搜索框
  • 京东网站建设过程网站开发硬件
  • 手机影视网站建设手机大全及价格
  • 百川网站维护网站备案名称的影响
  • 做ppt高手_一定要常去这八个网站企业网站背景颜色
  • 娱乐网站排行榜生物类培养基网站建设 中企动力
  • 深圳网站制作公司嘉兴怎样加强公司网站建设
  • 库尔勒网站建设知乎网站开发用的语言
  • 高端营销型网站建设招聘网站开发学徒
  • 如何做网站逻辑结构图wordpress 获取菜单项
  • 北京做网站公司的排名百度推广登录官网
  • 关键词挖掘网站亳州网站开发
  • 求南浦做电商网站教育类app开发
  • 人力资源网站模板做网站公司排行榜
  • 常州微网站洛可可设计公司市值
  • 阿里云网站建设方案书是什么北京市朝阳区网站开发公司
  • 温州企业做网站天华建筑设计公司官网