Я использую vue-resource для выполнения CRUD на ресурсах, например. теги статей. Для CUD мне нужно отправить токен csrf вместе с данными. Мой серверный код принимает пользовательский HTTP-заголовок «X-CSRF-TOKEN» и проверяет его значение.
Я делаю компонент тега для каждой записи тегов. Токен csrf поступает из корневого экземпляра и привязывается к компоненту тега, например:
<tr v-for="tag in tags" is="tag" :tag="tag" :token="token"></tr>
а вот шаблон
<template id="tag-template">
<tr>
<td>@{{ tag.id }}</td>
<td>@{{ tag.name }}</td>
<td>
<button type="button" class="btn btn-xs btn-outline green">Edit</button>
<button type="button" class="btn btn-xs btn-outline red" @click="deleteTag(tag,token)">Delete</button>
</td>
</tr>
</template>
Согласно документам vue-resource, я могу установить собственный заголовок следующим образом: Vue.http.headers.common['X-CSRF-TOKEN'] = token; Я также могу установить этот заголовок в настройках компонента.
Код ниже - это то, чего я хочу достичь:
Vue.component('tag', {
props: ['tag', 'token'],
template: '#tag-template',
methods: {
deleteTag: function (tag, token) {
// I don't want to repeat this line in my updateTag(), createTag() etc.
Vue.http.headers.common['X-CSRF-TOKEN'] = token;
this.$http.delete('/api/tags/' + tag.id).then(
function () {
vm.tags.$remove(tag);
},
function () {}
);
}
},
http: {
headers: {
// how to reference/use prop 'token' here?
'X-CSRF-TOKEN': 'token from prop list'
}
}
});
Вопрос в том, как я могу использовать prop в других опциях компонента?
Спасибо.