首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ajax调用后,Vue数据恢复为默认值

Ajax调用后,Vue数据恢复为默认值
EN

Stack Overflow用户
提问于 2020-07-28 13:04:39
回答 2查看 312关注 0票数 0

我一直在我的Nuxt应用程序上处理很多表单,有时在Axios调用之后,手动设置数据覆盖输入的值似乎是一个坏主意,特别是对于大对象。

代码语言:javascript
运行
复制
...
data(){

  return { 
   name : '',
  }

}
...

$axios.post('/users/create', name).then( resp =>{ 


   this.name = '' // changing it back to the initial value.


})

它对于一个小的物体是很好的,但是当它变大的时候,它似乎是一项任务。不知道我的好奇心是否明确,但我想做的就是让数据返回到初始值,而不刷新页面。

EN

回答 2

Stack Overflow用户

发布于 2020-07-28 14:01:31

您可以将data object放在variable中,并在Axios请求完成后使用循环重置它

代码语言:javascript
运行
复制
const initialObject = {
 name : 'foo'.
 ...
}
...
data(){

  return {
    ...initialObject
  }

}
...

$axios.post('/users/create', name).then( resp => { 
   for (let key in this.$data) {
     this[key] = initialObject[key]
   }
})
票数 1
EN

Stack Overflow用户

发布于 2020-07-28 14:12:06

假设您有一个很大的表单,或者您不想逐个清除字段

代码语言:javascript
运行
复制
// Declaring the default form values
const defaultOtherForm = {
  name: null,
  age: 18,
}
...
data: () => ({
  form: {
    name: null,
    age: null
  },
  otherForm: Object.assign({}, defaultOtherForm)
})

// After ajax called. You can use "loop" to clear values dynamically
Object.keys(this.form).forEach((key) => this.form[key] = null)

// Another way. Declare initialized form values and override with initialized values after ajax called successful
this.otherForm = defaultOtherForm

但是如果你想使用“本地重置”的形式。您可以通过表单包装

代码语言:javascript
运行
复制
// After ajax called. Just call reset() method via ref
this.$refs.userForm.reset()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63127357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档