data的值 如何初始化vue_在VueJs 2.0中重新初始化数据的正确方法

However, the current method is not allowed now and VueJS prohibits changing the $data var.

As you can see here in this https://github.com/vuejs/vue/issues/2873 ( $data is not allowed to be modified. )

So if I try the above method, I am getting a VueJS warning:

[Vue warn]: Avoid replacing instance root $data. Use nested data

properties instead.

Here is my JS code,

function initialState () {

return {

h2: 0,

ch4: 0,

c2h6: 0,

c2h4: 0,

c2h2: 0,

c3h8: 0,

c3h6: 0,

co: 0,

co2: 0,

o2: 0,

n2: 0,

selected: ''

}

}

export default {

name: 'something',

data () {

return initialState() // This is working fine

},

computed: {

tdcg: function () {

// some logic here...

}

},

methods: {

resetFields: function () {

this.$data = initialState() // --> This is what I want to achieve!

}

}

}

So what is the correct and the easiest way of re initialising my data?

解决方案

You can use Object.assign to iterate through all properties and assign them:

export default {

data () {

return {

h2: 0,

// other attributes...

};

},

methods: {

resetFields () {

Object.assign(this.$data, this.$options.data.call(this));

}

}

}

Note: I'm using this.$options.data to call the original data method again to get a fresh copy of the data. No need for a separate initialState function. The data method is the initial state function.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值