Parent-child communication in VueJS

Child component (a row) sends event to parent component to delete itself, via $emit

by Edward Tanguay

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.3/vue.js"></script>
<div id="app">
    <div>
      <row-component v-for="(row, index) in rows" :row-data="row" v-on:delete-row="deleteThisRow(index)"></row-component>
    </div>
</div>

<script id="theRow" type="x-template">
	<div>
    row component: {{rowData}}
    <button @click="$emit('delete-row')">Delete</button>
  </div>
</script>

JavaScript

Vue.component('row-component', {
    props: ["rowData"],
    template: '#theRow'
})

new Vue({
    el: '#app',
    data: {
        rows: ["line1", "line2", "line3", "line4", "line5"]
    },
    methods: {
        deleteThisRow: function(index) {
            this.rows.splice(index, 1);
        }
    }
})