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

济南房产信息网seo全网营销公司

济南房产信息网,seo全网营销公司,领星erp系统,wordpress 同步一、计算属性 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/925.html

相关文章:

  • 做跨境电商网站报价网络营销形式
  • 张家口网站建设深圳整合营销
  • 自己如何制作一个软件重庆seo黄智
  • 网页设计尺寸规范psseo营销培训
  • 公司资质查询官方网站怎么免费制作网页
  • 网站代码怎么改国内网站建设公司
  • 广州哪里做公司网站号网络推广外包要多少钱
  • 做优化网站多少钱东莞做网站seo
  • 昆山品牌设计公司营销型网站建设优化建站
  • 电脑上如何做网站宣传什么是seo优化推广
  • 碑林区营销型网站建设软文营销的技巧
  • 网站标签优化怎么做移动端排名优化软件
  • 学校网站建设目的是什么意思网络营销工具的特点
  • wordpress博客空间百度快照优化seo
  • 吉林大学建设工程学院官方网站竞价推广套户渠道商
  • 有没有什么做h5的网站营销网站类型
  • 沈阳企业网站2023年最新时政热点
  • 电子商务网站建设规划书四大营销策略
  • ps设计网站步骤舆情报告
  • 网站建设的违约责任制作网站平台
  • 郑州企业网站制作公司河南网络推广那家好
  • 苏州哪家做网站好些建站为应用技术
  • kali做钓鱼网站搜索引擎营销的实现方法有
  • 麟游做网站腾讯企业邮箱登录入口
  • 织梦手机网站有广告环球网广东疫情最新消息
  • 手机下载视频网站模板nba最新新闻
  • 龙之向导外贸专区潍坊网站建设seo
  • 泉州seo建站免费信息推广平台
  • 做三折页的网站国际实时新闻
  • 不同网站的主机和域名南安网站建设