【Vue.js】v-bindの使い方
解決したいこと
フロントエンドをVue.js v2.6.10
バックエンドをlaravelで構築しているアプリケーションを運用。
vueコンポーネントのテンプレートからpostでlaravelのコントローラーにリクエストを送りたい。
前提
バックエンドを改修しないで解決したいので、
API化やaxiosなどで非同期にするのではなく、あくまでvue.jsからコントローラーへpostする方法限定の話。
発生している問題
form要素のaction属性、input要素のvalue属性を動的に処理したいが、
methods内でdataに対して、属性値を更新しても上手く代入した値でpostされない。
該当するソースコード
vue.js
略
<form :action="action" method="post" ref="form">
<input :value="id" type="hidden" name="id">
</form>
<span @click.prevent="formSubmit(item.id, '/edit')">編集する</span>
略
export default {
data(){
return {
action: '',
id: ''
}
},
methods:{
formSubmit(id, action){
this.id = id;
this.action = action;
this.$refs.form.submit();
return false;
}
略
ちなみに↓だと上手くいく
vue.js
略
<form action="" method="post" ref="form">
<input value="" type="hidden" name="id" ref="input">
</form>
<span @click.prevent="formSubmit(item.id, '/edit')">編集する</span>
略
export default {
methods:{
formSubmit(id, action){
this.$refs.form.value = id;
this.$refs.form.action = action;
this.$refs.form.submit();
return false;
}
略
input要素のvalue属性をバインドするのは珍しくないと思うのだが。
0