我正在使用 Laravel 并尝试学习 Vue.js。我有一个正常工作的删除请求并从数据库中删除对象。问题是成功删除后它没有从 DOM 中删除。我正在使用该$remove
方法并将完整的对象传递给它,所以我知道我遗漏了一些东西。
作为旁注,我将 amain.js
作为入口点,并将 aPersonTable.vue
作为组件。保存该PersonTable.vue
模板的模板和脚本。
这是我的 Laravel 视图:
<div id="app">
<person-table list="{{ $persons }}">
</person-table>
</div>
这是我的`PersonTable.vue:
<template id="persons-template">
<div class="container">
<div class="row">
<div class="col-sm-12">
<h1>Persons List</h1>
<table class="table table-hover table-striped">
<thead>
<tr>
<td>First Name</td>
<td>Last Name</td>
<td>Email</td>
<td>Gender</td>
</tr>
</thead>
<tbody>
<tr v-for="person in list">
<td>{{person.first_name }}</td>
<td>{{person.last_name }}</td>
<td>{{person.email }}</td>
<td>{{person.gender }}</td>
<td><span @click="deletePerson(person)">X</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</template>
<script>
export default {
template: '#persons-template',
props: ['list'],
methods: {
deletePerson: function(person) {
this.$http.delete('/person/' + person.id).then(
function(response) {
this.persons.$remove(person);
}
);
}
},
created: function() {
this.persons = JSON.parse(this.list);
}
};
</script>
我的main.js
切入点:
var Vue = require('vue');
Vue.use(require('vue-resource'));
var Token = document.querySelector('meta[name="_token"]').getAttribute('content');
Vue.http.headers.common['X-CSRF-TOKEN'] = Token;
import PersonTable from './components/PersonTable.vue';
new Vue({
el: '#app',
components: { PersonTable },
})