vue中使用JSON.parse

前提条件是:该组件渲染界面有一个倒计时的定时器,定时器代码如下:

  <span style="margin-left:30px;color:#4990ee;" v-if="this.remainTime!=-1">倒计时:<span id="time1" style="color:red;font-size:24px;"  v-if="this.remainTime!=-1">{{lastTime}}</span></span>

this.interval = setInterval(function() {
sec–;
this.lastTime = this.secToTime(sec);
}.bind(this), 1000);

所渲染的子组件
方法一:

<Generateorm
v-if=“data.taskData”
:data=“JSON.parse(data.tableContent)”
:value=“JSON.parse(data.taskData)”
@on-change=‘onChange’>

方法二:

<Generateorm
v-if=“data.taskData”
:data=“JSON.parse(data.tableContent)”
:value=“data.taskData”
@on-change=‘onChange’>

on-change这个方法是当:value绑定的值改变是,子组件Generateorm就会调取

this.$emit(‘on-change’, field, value, this.models,this.index)

方法一的写法会不停地触发onChange()这个函数,但是采用方法二在获取变量值后就将其转为对象,就不会不停的触发此函数。如果取消定时器,则方法一也不会触发,有哪位大神可以解答一下,令人头秃。

初步猜测是因为JSON.parse(data.taskData)返回对象不同所以会触发,由于对象是指针指向的,当指针不同时,对象也就不同。

Logo

前往低代码交流专区

更多推荐