data()里的属性重复初始化

2018-05-30 05:10:58 +08:00
 starvedcat
export default {
data () {
return {
  isA: false,
  isB: false,
  isC: true
}
},

created () {
this.fetchResult()
},

watch:{
'$route': function () {
this.fetchResult()
}
},

methods: {
fetchResult () {
  this.isA = false,
  this.isB = false,
  this.isC = true
  // fetching result ...
}
}
}

如上面代码所示,我现在希望每次 fetchResult 的时候,都要重置那些this.isA, this.isB, this.isC的值为默认值,但是这样看起来就和 data()里重复了。想请问一下有没有一种优雅的、不重复的写法?

2118 次点击
所在节点    Vue.js
8 条回复
airyland
2018-05-30 06:03:43 +08:00
如果只有几个值倒不用怎么纠结。

const initStatus = {
isA: false,
isB: false,
isC: true
}


data () {
return {
status: { ...iniStatus }
}
}


fetchResult () {
this.status = { ...iniStatus }
}
zjwshisb
2018-05-30 08:49:25 +08:00
Object.assign(this.data,this.$option.data())
zjwshisb
2018-05-30 08:51:50 +08:00
上面漏写了个 s,options
noe132
2018-05-30 10:12:13 +08:00
打他。也是个函数,也可以调用其他函数。你可以专门写个初始化值得函数
starvedcat
2018-05-30 11:07:45 +08:00
@noe132 #4 但是最后不是要 return 那些变量吗?
airyland
2018-05-30 11:16:02 +08:00
发现上面写的 iniStatus 少打了个 t,理论上直接合并到 data 也是可以的,不用再定义多一个 status,个人习惯,初始化状态放一个 obj 这样感觉清晰一些。
starvedcat
2018-05-30 11:22:03 +08:00
@airyland #6 谢谢大佬,可是我还是不太明白,如果不定义一个 status,要怎么合并那些 isA, isB, isC 呢?
noe132
2018-05-30 11:33:15 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/458817

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX