vue的data属性,vue修改computed的数据

  vue的data属性,vue修改computed的数据

  

目录

已计算计算属性和数据数据获取解决方法一解决方法二计算计算属性取对象的值,第一次报错不明确的报错和打印值解决方案

 

  

computed计算属性和data数据获取

获取到数据(对象、数组),截取一部分显示到页面中,用计算计算属性来实现截取数据然后直接输出到页面。

 

  div class=详细信息框 h1 class=详细信息标题“{活动数据。title } }/h1 div class= detail con Pb活动时间:/b{{ActStart}}至{{ActEnd}}/p pb报名时间:/b{{SigStart}}至{ { SigEnd } }/p/div/div data(){ return { active data : ,//活动详情所有数据}},方法:{//获取对应的数据这个主动数据=响应。数据。数据;} computed : { ActStart(){ console。记录(这个.活动数据。活动_开始时间);归还这个活跃数据。活动开始时间。子串(5,11);},ActEnd(){返回此活跃数据。活动_结束时间。子串(5,11);},SigStart(){返回此活跃数据。报名_开始时间。子串(5,11);},SigEnd(){返回此活跃数据。报名_结束时间。子串(5,11);}, }页面如愿显示出想要的效果了,但是也报错了!那是因为数据里的数据是在mouted中执行函数才获取到数据,是在计算之后,所以在第一次计算计算时,数据中的ActiveData数据还是空的,所以计算找不到ActiveData里的数据。

  就会报未定义接着是呈现错误: 类型错误:……获取到值后重新计算又出现了获取到的值。

  

解决方法一

给要截取的数据赋一个默认值,已计算计算属性会先去计算默认值,在获取到新值后重新计算,就不会报未定义的错误了。

 

  data() { return { ActiveData: ,//活动详情所有数据ActStarts: ,//活动开始时间ActEnds: ,//活动结束时间SigStarts: ,//报名开始时间SigEnds: ,//报名结束时间} },方法:{//获取对应的数据这个主动数据=响应。数据。数据;这个行为开始=响应。数据。数据。activity _开始时间;这个行为结束=回应。数据。数据。活动_结束时间;这个. SIG开始=响应。数据。数据。报名_今年开始时间.SigEnds=响应。数据。数据。sign up _ end time }计算: { act start(){ console。记录(这个.act开始);归还这个ActStarts.substring(5,11);},ActEnd(){返回此ActEnds.substring(5,11);},SigStart(){返回此SigStarts.substring(5,11);},SigEnd(){返回此SigEnds.substring(5,11);}, }

  

解决方法二

在计算中增加如果判断,在数据中的ActiveData里有数据时才在计算中返回对应的数据

 

  data() { return { ActiveData: ,//活动详情所有数据}},方法:{//获取对应的数据这个主动数据=响应。数据。数据;} computed : { ActStart(){ console。记录(这个.活动数据。活动_开始时间);如果(这个ActiveData.activity_starttime!==未定义){返回此活跃数据。活动开始时间。子串(5,11);} },ActEnd(){ if(这个ActiveData.activity_endtime!==未定义){返回此活跃数据。活动_结束时间。子串(5,11);} },SigStart(){ if(this .ActiveData.signup_starttime!==未定义){返回此活跃数据。报名_开始时间。子串(5,11);} },SigEnd(){ if(这个ActiveData.signup_endtime!==未定义){返回此活跃数据。报名_结束时间。子串(5,11);} },}

  

computed计算属性取对象的值,第一次报错undefined

代码如下:

 

  data() { return { limit:3,checkedIndex:0,addressList:[],isMdShow:false,address id : };},components: { NavHeader,NavFooter,NavBread,Modal },mounted(){ this.init() },computed : {地址列表过滤器(){返回this。地址列表。slice(0,this.limit) },所选地址id(){//if(this。地址列表。长度0){ let data=this。通讯录【这个。已检查索引].地址id控制台。日志(这个。地址列表,===)返回数据//} },图片:

  注意,初始化的时候,地址列表还是一个空数组,那地址列表[索引]对象就不存在,肯定就没有字段这个属性,所以会报不明确的

  

报错和打印值

 

  

解决方案

那我们现在可以知道,报错的原因是第一次计算的时候,地址列表还没有赋值,所以,我们可以进行一个判断,当地址列表有值了我们在进行计算

 

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它.

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: