• vue中ref的用法


    ref

    1. 预期:string

      ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。

    2. 如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;

    3. 如果用在子组件上,引用就指向组件实例:

      <!-- `vm.$refs.p` will be the DOM node -->
      <p ref="p">hello</p>
      
      <!-- `vm.$refs.child` will be the child component instance -->
      <child-component ref="child"></child-component>

      当 v-for 用于元素或组件的时候,引用信息将是包含 DOM 节点或组件实例的数组。

      关于 ref 注册时间的重要说明:因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!$refs 也不是响应式的,因此你不应该试图用它在模板中做数据绑定。

         

     通过官方的说明,其实ref就是一个引用。

    上图中,有三处有ref

    1)helloRef是一个组件里的,这个组件就是初创项目的时候显示的一个字符串

    2)yearInput是一个element-ui的一个文本框,用于输入一个值

    3)tableRef是一个element-ui的一个表格

    getTableColumns是一个测试的method

    第一行显示的是一个字符串

    第二行显示的是输入的值

    第三行显示的是一个表格的数据

    <template>
      <div>
        <hello-world ref="helloRef"></hello-world>
        <el-input
          v-model="xs_year"
          placeholder="请输入内容"
          @blur="inputChange"
          ref="yearInput"
        ></el-input>
        <el-table :data="tableData" ref="tableRef">
          <el-table-column prop="xs_year" label="日期" width="140">
          </el-table-column>
          <el-table-column prop="realname" label="姓名" width="120">
          </el-table-column>
          <el-table-column prop="xq_code" label="地址"> </el-table-column>
        </el-table>
      </div>
    </template>
    
    <script>
    import { getXsList } from '../api/index'
    import Pagination from "../components/pagination";
    import Progress from "../components/progress";
    import HelloWorld from '../components/HelloWorld';
    
    export default {
      name: "UserList",
      components: { Pagination, Progress, HelloWorld },
      data () {
        return {
          xs_year: '2018',
          pageR: {
            page: this.$page,
            size: this.$size
          },
          tableData: null
        }
      },
      created () {
      },
      mounted () {
        let _this = this;
        _this.getXsList(this.xs_year, null, null);
      },
    
      destroyed () {
      },
      methods: {
        inputChange () {
          this.getTableColumns();
        },
        getTableColumns () {
          console.log(this.$refs.helloRef.msg)
          console.log(this.$refs.yearInput.value)
          console.log(this.$refs.tableRef.data)
        },
        getXsList (xs_year, xq_code, realname) {
          this.loading = true;
          const params = {
            xs_year: xs_year,
            xq_code: xq_code,
            realname: realname
          };
          console.log(JSON.stringify(params));
          getXsList(params).then((res) => {
            if (res.data) {
              let r = res.data;
              this.tableData = r.rows;
            } else {
              this.showErrMsg('请求错误!');
            }
            this.loading = false;
          }).catch(() => {
            this.showErrMsg('请求错误!');
            this.loading = false;
          });
        }
      }
    
    }
    </script>
    <style scoped>
    </style>
    道法自然
  • 相关阅读:
    【板子】博弈论
    【洛谷】P1229快速幂
    【洛谷】P1349广义斐波那契
    2018.11.15 Nginx服务器的使用
    2018.11.14 hibernate中的查询优化---关联级别查询
    2018.11.13 Hibernate 中数据库查询中的Criteria查询实例
    2018.11.12 Spring事务的实现和原理
    2018.11.11 Java的 三大框架:Struts+Hibernate+Spring
    2018.11.10 Mac设置Eclipse的 .m2文件夹是否可见操作&&Mac系统显示当前文件夹的路径设置
    2018.11.9 Dubbo入门学习
  • 原文地址:https://www.cnblogs.com/jiduoduo/p/14507881.html
Copyright © 2020-2023  润新知