Vue.component('results', { template: '#results-template', props: ['results', 'cols'], methods: { sortBy: function(col) { } } }); Vue.component('paginate', { template: '#paginate-template', props: ['page'], methods: { prevPage: function() { }, nextPage: function() { } } }); var index = new Vue({ el: '#index', data: { page: 1, perpage: 20, sort_by: null, order_desc: false, cols: [{name:'test'}, {name:'test2'}], results: [{}] }, methods: { showSeries: function() { console.log("Series"); }, showAuthors: function() { console.log("Authors"); }, showBooks: function() { console.log("Books"); } } });