- 子组件在传值的时候,选用input,如this.$emit(‘input’,val),在父组件直接用v-model绑定,就可以获取到
- 而子组件也可以通过$emit(‘input’,this.val),去改变父组件中v-model 和 子组件中 value 的值 。
<ywselect v-model="form.name" :author="author"></ywselect>
<ywinput :value.sync="form.input" placeholder="请选择活动区域"></ywinput>
input
<template>
<div>
<input :type="type" :value="value" @input="onInput" :placeholder="placeholder" class="el-input__inner"></input>
</div>
</template>
<script>
export default {
name: "KInput",
props: {
value: {
type: String,
default: ''
},
type: {
type: String,
default: 'text'
},
placeholder: {
type: String,
default: ''
}
},
methods: {
onInput(e) {
this.$emit('update:value', e.target.value)
}
},
}
</script>
<style>
</style>
select
<template>
<div class="yw-select">
<el-select :value="value" filterable remote reserve-keyword placeholder="请输入关键词" @change="onInput" :remote-method="remoteMethod"
:loading="loading">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</div>
</template>
<script>
import {
routes
} from '@/router/index.js'
var time = null
export default {
props: {
author:{
type: Object,
default: function () {
return { }
}
},
value: {
type: String,
default: '',
},
},
data() {
return {
options: [],
loading: false
}
},
mounted() {
this.getoption()
},
methods: {
async remoteMethod(query) {
console.log('sas')
time = null;
if (query !== '') {
this.loading = true;
time = setTimeout(() => {
this.loading = false;
this.$axios.get('/api/selects').then((res) => {
if (res.data) {
console.log(res.data)
this.options = res.data.filter(item => {
return item.lable.toLowerCase()
.indexOf(query.toLowerCase()) > -1;
});
} else {
}
})
}, 200);
} else {
this.options = [];
}
},
async getoption(){
},
onInput(e) {
console.log(e)
this.$emit('input', e)
}
}
}
</script>
<style>
</style>