zoukankan      html  css  js  c++  java
  • input模糊匹配 组件赋值问题

    <template>
    <el-autocomplete
    v-model="svalue"
    :fetch-suggestions="querySearchAsync"
    placeholder="请输入内容"
    size="small"
    @select="setUserInfo"
    ></el-autocomplete>
    </template>

    <script>
    import {getUserList} from '@/api/dictionary_option'

    export default {
    data() {
    return {
    restaurants: [],
    svalue: this.value
    };
    },
    props: {
    value: {
    type: String
    }//接受外部v-model传入的值
    },
    watch:{
    //判断下拉框的值是否有改变
    value(val) {
    this.svalue = val;//②监听外部对props属性value的变更,并同步到组件内的data属性svalue中
    },
    svalue(val, oldVal) {
    if(val == ""){
    this.$emit('input', this.svalue);
    }
    },
    },
    methods: {
    getList(){
    let that = this;
    return getUserList(that.svalue)// 获取用户列表
    .then((res) => {
    let arr = [];
    // el-autocomplete元素要求数组内是对象,且有value属性,此处做一个格式调整
    $.each(res.data.result, function(i, item){
    arr.push({
    value: item.displayName, // 员工姓名+编码
    sid: item.sid, // 员工id
    userCode: item.userCode, // 员工编码
    userName: item.userName, // 员工姓名
    userNum: item.userNum // 员工工号
    })
    });
    that.restaurants = arr;
    }).catch(error => {
    console.log(error);
    });
    },
    querySearchAsync(queryString, cb) {
    var restaurants = this.restaurants;
    var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
    cb(results);
    },
    createStateFilter(queryString) {
    return (state) => {
    return (state.value.indexOf(queryString.toLowerCase()) === 0);
    };
    },
    setUserInfo(item) {// item为选中字段所在的对象
    // console.log(item);
    this.svalue = item.userName;// 输入框展示姓名
    /* 子组件通过事件发射向父组件传递事件及参数,$emit即为发射事件
    第一个参数为向父组件传递的事件名,第二个参数为向父组件传递的参数 */
    this.$emit( 'setUserInfo', item);// 回调 传参(整个对象,包括姓名、员工号)
    }
    },
    mounted() {
    // this.svalue=this.value;//初始话下拉框的值
    this.getList();
    }
    };
    </script>
  • 相关阅读:
    解读基本数据类型和内置方法(1)(要掌握)
    简单循环流程的介绍
    基本数据类型的使用和运算符的介绍
    开辟编程语言的介绍和变量
    HTML5 元素超出部分滚动, 并隐藏滚动条
    数据库多行数据合并一行(sqlserver、Oracle、Mysql)
    Js apply方法与call方法详解 附ES6新写法
    Java实现牛顿迭代法求解平方根、立方根
    为什么在JavaScript中0.1+0.2不等于0.3?
    html5手机web页面底部菜单
  • 原文地址:https://www.cnblogs.com/wplcc/p/11027532.html
Copyright © 2011-2022 走看看