Reputation: 39
Test.vue
<template>
<li v-for="item in masterCompany" v-bind:key="item.id">
{{ item.displayName }}
</li>
</template>
<script>
import Test from "../hooks/Test.hook";
import { onMounted } from "vue";
export default {
setup() {
const { getCompanysService, masterCompany } = Test.onLoadCompanys();
onMounted(getCompanysService);
return {
getCompanysService,
masterCompany,
};
},
};
</script>
Test.hook.js
import MasterService from '../services/masters.service'
import {reactive} from 'vue'
function LoadCompanys() {
let masterCompany = reactive([])
const getCompanysService = async () =>
{
masterCompany.value = await MasterService.getCompanys();
}
return {
masterCompany,
getCompanysService
}
}
export default {
onLoadCompanys : LoadCompanys
};
master.service.js
import HttpRequest from './api.service'
let http = new HttpRequest();
export const Masters = {
async getCompanys(){
let url = 'https://Test.com/GetCompany';
return await http.get(url).then((res) => {
console.log('getCompanys',res)
return res.data;
})
}
}
export default Masters
I tried to get data from api so but I don't know to binding in components
components does not show value.
Or is there a better way to do this? Please advise.
Upvotes: 0
Views: 381
Reputation: 1
masterCompany
should be defined as ref
or a nested field in an object passed toreactive
:
import MasterService from '../services/masters.service'
import {ref} from 'vue'
function LoadCompanys() {
let masterCompany = ref([])
Upvotes: 1