简体   繁体   中英

Laravel - Vue js application not showing data properly

working with Vue js and Laravel REST API. database is mysql. but when try show ContactList it is not displaying here.. web.php

Route::prefix('api')->group(function() {
    //get contact
    Route::get('getContacts','ContactController@getContacts');
});

ContactController.php

class ContactController extends Controller
{
    public function getContacts() {
        $contacts = Contact::all();
        return $contacts;
    }
}

ContactList.vue

  <tbody v-for="contact in contacts" :key="contact.id">
                <tr>
                    <th scope="row">{{ contact.id}}</th>
                    <td>{{ contact.name}}</td>
                    <td>{{ contact.email}}</td>
                    <td>{{ contact.designation}}</td>
                    <td>{{ contact.contact_no}}</td>
                    <td><button class="btn btn-danger btn-sm">Delete</button></td>

                </tr>
            </tbody>

        </table>
    </div>
</template>

<script>
export default {
    name:'Contact',
    created() {
        this.loadData();

    },
    methods: {
        loadData() {
            let url = this.url + '/api/getContacts';
            this.axios.get(url).then(response => {
                this.contacts = response.data
                console.log(this.contacts);
            });
        
        
        },
        mounted() {
            console.log('Contact List Component Mounted');
        },
        data() {
            return {
                url: document.head.querySelector('meta[name="url"]').content,
                contacts:[]
            }
        }
    }
}
</script>

console displaying following error **[Vue warn]: Property or method "contacts" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties .

found in

---> at resources/js/components/ContactList.vue **

In Laravel Side send response in a proper format

 $contacts = Contact::all();
    
 $data['contacts'] =  $contacts;

 return response()->json(['status' => true, 'message' => 'Contacts collected', 'data' => $data]);

Vue.js Side

let url = this.url + '/api/getContacts';
  this.axios.get(url).then(response => {
  this.contacts = response.data.data.contacts
 });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM