你的
<text-input>
组件需要转发(re)-
emit
)那个
blur
来自内心的事件
<input>
要素:
// text-input
template: `<input @blur="$emit('blur')">`
然后
<文本输入>
孩子的父母可以收到:
// parent of text-input
<text-input @blur="leave" />
Vue.component('text-input', {
props:['args'],
template: `<input :id="args.id" :type="args.type" @blur="$emit('blur', $event)"/>`
})
new Vue({
el: '#app',
data() {
return {
inputs: [
{id: 1},
{id: 2},
]
}
},
methods: {
leave(e) {
console.log('leave', e.target.id)
}
}
})
<script src="https://unpkg.com/vue@2.5.16"></script>
<div id="app">
<div class="form-group">
<text-input
class="form-control"
v-for="input in inputs"
v-bind:args="input"
v-bind:key="input.id"
v-model="input.id"
v-on:blur="leave"
/>
</div>
</div>