vue js的新手,我发现它在某些方面有些混乱,但这是我正面临的最新困惑。
例如,我想删除id为3的行,但其在列表中的位置为0,当单击delete时,它将在控制台中返回错误:
DELETE http://simvuecore/api/contoh/0 404 (Not Found)
这意味着axios在控制器期望position
的同时发送id
,尽管实际上id
并未在其中声明。
为了参考,这是我的代码:
API routes
:
Route::delete('/contoh/{contoh}', 'contohController@destroy');
contohController
:
public function destroy(contoh $contoh)
{
$contoh->delete();
return response('terhapus', 200);
}
store.js
:
state: {
contoh: []
},
mutations: {
deleteContoh(state, id) {
const index = state.contoh.findIndex(item => item.id == id)
state.contoh.splice(index, 1)
}
},
actions: {
deleteContoh(context, id) {
axios.delete('api/contoh/' + id)
.then(response => {
context.commit('deleteContoh', id)
})
},
}
contohItem.vue
:
methods: {
removeContoh(id) {
this.$store.dispatch('deleteContoh', id)
},
在使用POSTMAN
并从vue请求时,所有CRUD操作都能正常工作,由于此delete
和position
问题,id
是唯一不起作用的操作
问题:
如何告诉axios发送id
而不是position
到控制器?
更新:
通过遵循@andrey popov的答案解决了问题。
我在contohItem.vue
中有这个东西:
<span @click="removeContoh(index)" class="remove-contoh">X</span>
,并且在我将其更改为此后,它会起作用:
<span @click="removeContoh(id)" class="remove-contoh">X</span>
答案 0 :(得分:1)
从您的代码中,我可以看到您一直沿函数传递id
,并且deleteContoh
动作实际上将其发送到服务器。这意味着您调用removeContoh
的方式存在问题-您传递的不是id
而是index
,因此您应该更改它。
祝你好运!