<!-- 窗口列表 -->
<div id="app" class="app-container" >
<h3>窗口列表</h3>
<div class="input_box">
<input class="input_style" type="text" v-model="val" />
<ul class="ul_style" v-if="val.length !== 0 && isShow">
<li @click="changeInfo(item)" class="li_style" v-for="(item, index) in newArr">{{ item.name }}</li>
</ul>
</div>
</div>
<script src="js/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
val: "",
isShow: false,
newArr: [],
arr: [
{ name: "张三", age: 18 },
{ name: "李四", age: 18 },
],
},
watch:{
val:function(newVal,oldVal){
console.log(newVal,'newVal')
console.log(oldVal,'oldVal')
this.newArr = this.arr.filter(item => {
if(item.name.indexOf(newVal) !== -1) return item;
});
if(this.newArr.length !== 0) this.isShow = true;
}
},
methods: {
changeInfo(item){
console.log(this.val.length,'this.val.length')
this.val = item.name;
this.$nextTick(() => {
this.isShow = false;
})
}
},
})
</script>
<style lang="scss" scoped>
.input_box{
width:500px;
position:relative;
}
.input_style{
width:calc(100% - 25px);
}
.ul_style{
width:calc(100% - 25px);
height:auto;
position:absolute;
top:10px;
left:0;
border:1px solid #ddd;
}
.li_style{
height:30px;
line-height: 30px;
width:100%;
}
</style>