【发布时间】:2019-03-28 00:36:38
【问题描述】:
我正在尝试同时更新多条记录,这需要我将一组 id 与我的表单数据一起发送。我正在使用 Vue.js 并通过 axios 从我的 vuex 商店发送数据。
数据是从我的 vue 组件发送的,如下所示:
methods: {
...mapActions(['updateCheckedEngagements']),
updateChecked() {
this.updateCheckedEngagements({
engagements: this.checkedEngagements,
assigned_to: this.engagement.assigned_to,
status: this.engagement.status
})
},
}
this.checkedEngagements 正在收集我将要更新的 id 数组。但是,由于我使用 vuex 来实际发送数据,所以我正在执行以下操作,这不是我以前需要做的事情,所以我试图弄清楚这是否是正确的方法。这是我的vuex商店中的方法
updateCheckedEngagements(context, engagement, checkedEngagements) {
axios.patch('/engagementsarray', {
engagements: checkedEngagements,
assigned_to: engagement.assigned_to,
status: engagement.status,
})
.then(response => {
context.commit('updateCheckedEngagements', response.data)
})
.catch(error => {
console.log(error.response.data)
})
},
现在的问题是在这里传递方法中的第三个参数:
updateCheckedEngagements(context, engagement, checkedEngagements)
我不确定它实际上是在发送 id 数组。我确实知道当我执行console.log(this.checkedEngagements) 时,正在从表单中收集 ID。但是,当我将它发送到 vuex 时,我感觉好像遗漏了一些东西......任何帮助将不胜感激......
【问题讨论】:
-
Vuex 动作和突变只接受两个参数。如果要传递多个参数,则需要传递一个对象作为第二个参数,其中每个属性都是您要传递的参数之一。
-
是的,如果我将
checkedEngagements: []放在engagement对象内,但是当我这样做时,我正在捕获 Id 数组的v-model没有填充,这似乎是一个单独的问题关于嵌套数组..反之亦然,如果我在使用该操作时未定义“checkedEngagements”,它将返回警报checkedEngagements未定义... -
我整理了一个小例子以确保我理解。我在那里留下了一些 cmets 描述我认为它应该如何工作。 codepen.io/Kradek/pen/WaYbdY?editors=1010
-
@Bert,感谢您抽出宝贵时间,但是我将
updateCheckedEngagements(context, engagement, checkedEngagements)更改为updateCheckedEngagements(context, checkedEngagements),并更新了我的v-model以更加明确。我将在下面发布我的答案。