【发布时间】:2019-02-25 06:38:31
【问题描述】:
我正在尝试将新创建的对象推送到数组。数组定义为
clientengagements: []
对象是
engagement: []
所以我使用 v-for 来遍历我的 clientengagements 数组中属于客户的每个参与。 在我提交新的约定之前一切正常。它将我的 clientengagements: [] 数组更改为仅显示新对象。现在,如果我刷新页面,clientengagements: [] 将返回到数组,其中包含新添加的对象以及已经存在的其他对象,这就是我想要它做的事情..
这是我用来分派到商店的 AddEngagement 组件脚本
methods: {
...mapActions(['addEngagement']),
addNewEngagement() {
if(!this.engagement.return_type || !this.engagement.year ) return;
this.addEngagement({
id: this.idForEngagement,
client_id: this.client.id,
return_type: this.engagement.return_type,
year: this.engagement.year,
assigned_to: this.engagement.assigned_to,
status: this.engagement.status,
})
.then(() => {
this.engagement = ""
this.idForEngagement++
this.$router.go(-1);
})
},
},
商店中的动作定义如下
addEngagement(context, engagement) {
axios.post(('/engagements'), {
client_id: engagement.client_id,
return_type: engagement.return_type,
year: engagement.year,
assigned_to: engagement.assigned_to,
status: engagement.status,
done: false
})
.then(response => {
context.commit('getClientEngagements', response.data)
})
.catch(error => {
console.log(error)
})
},
从那里它应该提交 getClientEngagements() 突变,我相信这是我遇到的问题,但我还没有想出如何解决。这是代码
getClientEngagements(state, clientengagements) {
state.clientengagements = clientengagements;
},
有人建议我使用 Vue.set() 但我不知道如何应用它。任何帮助将不胜感激!!!
【问题讨论】:
-
当应用程序向 API 发布新的参与时,API 是否返回所有参与的完整列表?看起来这就是代码所假设的。
-
为了在你的操作中使用
.then(),它需要返回一个promise。把return放在axios.post(...前面 -
@StephenThomas 不,它只返回新添加的参与。我已经改变了一点我发布这个问题的代码意义