const employees = {
state: {
employees: [
{ id: 1, name: 'Jeff' },
{ id: 2, name: 'Joe' },
{ id: 3, name: 'Jimmy' },
{ id: 4, name: 'Jake' },
{ id: 5, name: 'Jill' },
]
},
}
const companies = {
state: {
companies: [
{ id: 1, name: 'Foo Co.', employeeIDs: [ 1, 4, 5 ] },
{ id: 2, name: 'Bar Co.', employeeIDs: [ 2, 3, 5 ] },
]
},
getters: {
getCompanyEmployees(state, getters, rootState, rootGetters) {
return (companyID) => {
let company = state.companies.find((c) => c.id = companyID);
return rootState.employees.employees.filter((e) => {
return company.employeeIDs.indexOf(e.id) >= 0;
})
}
}
}
}
const store = new Vuex.Store({
modules: { employees, companies }
})
new Vue({
el: '#app',
store,
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.4/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vuex/2.4.0/vuex.min.js"></script>
<div id="app">
{{ $store.getters.getCompanyEmployees(1) }}
</div>