Laravel6とVue.jsで非同期のCRUDアプリの制作に取り組んでおります。
削除ボタンを押してモーダルの確認画面を表示させようと思っていますが、
常にモーダルが出現した状態になり、解決できず困っております。
index.blade.php
blade
1 <table class="table justify-content-center text-nowrap table-striped" id="group"> 2 <tr> 3 <th>グループ名</th> 4 <th>所属数</th> 5 <th> </th> 6 </tr> 7 <tbody> 8 <tr v-for="(group, index) in groups" v-bind:key="index"> 9 <td>@{{ group.name }}</td> 10 <td> </td> 11 <td> 12 <div class="edit-delete"> 13 <form action="/group/edit/group.id" method="get"> 14 @csrf 15 <input type="submit" value="編集" class="mr-1 edit btn btn-info"> 16 </form> 17 <button class="delete btn btn-info" v-on:click="openModal">削除</button> 18 </div> 19 </td> 20 </tr> 21 </tbody> 22 <div v-if="showContent"> 23 <div id="overlay"> 24 <div id="content"> 25 <p>これがモーダルウィンドウです。</p> 26 <button v-on:click="closeModal">Close</button> 27 </div> 28 </div> 29 </div> 30 </table>
Vue
1new Vue({ 2 el: '#group', 3 data: { 4 showContent: false, 5 groups: [], 6 }, 7 methods: { 8 deleteRow: function(id,index){ 9 axios.post('http://192.168.56.101/api/group/delete/' + id) 10 .then(response => { 11 console.log(index) 12 this.groups.splice(index,1) 13 }) 14 }, 15 openModal: function(){ 16 console.log(showContent) 17 this.showContent = true 18 }, 19 closeModal: function(){ 20 this.showContent = false 21 } 22 }, 23 mounted () { 24 axios.get('http://192.168.56.101/api/group').then(response => { 25 console.log(response.data.groups); 26 this.groups = response.data.groups; 27 }) 28 } 29});
##試したこと
画面表示されているcloseボタンも効かないため、モーダル部分をコメントアウトして、削除ボタンを押すと下記エラーになります。
[Vue warn]: Error in v-on handler: "ReferenceError: showContent is not defined"
dataでshowContent: falseを定義していますが、これが定義されていないと見なされているため、v-if="showContent"でもモーダルが表示されてしまうようです。
この原因は何故でしょうか?
お知恵をお貸しいただければ幸いです。
よろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー