Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
722 views
in Technique[技术] by (71.8m points)

table data数据更新后,插槽数据提示undefined,请问如何可以动态渲染数据?

image.png

删减了一些代码,
1.点击搜索之后查询10条数据,表能正常渲染出来
image.png
2.点击表末尾按钮加载新的10条数据,替换原来的tabledata数据后控制台报错,表没有变化还是第一次的样子
image.png

<div class="search-tool">
          <el-input placeholder="请输入内容" :disabled="searching" prefix-icon="el-icon-search" v-model="searchinput" @keyup.enter.native="searchEnterFun" clearable class="tool-item" style="width:300px">
          </el-input>
          <el-button class="tool-item" type="primary" :loading="searching" @click="searchEnterFun" plain>搜索</el-button>
</div>
<el-card>
<div slot="header">
标题
</div>
<el-table :data="matchlist"  fit align="center"  :show-header="false">
   <el-table-column>
    <template v-slot:default="scope">
    <span>{{scope.row.matchInfo.UsedTime}}</span>
    </template>
   </el-table-column>
 <div slot="append" class="no-more">
<el-button type="primary" @click="loadMore">点击加载更多</el-button>
</div>
</el-table>
</el-card>
<script>
import { getListData } from '../utils/server.js';
export default {
  data() {
    //选项 / 数据
    return {
      searchinput: '',
      searching: false,
      hasSearch: false,

      matchlist: [],
      rolerank: [],
      pageSize: 10,
      totalPage: 0,
      hasdone: false,
      forceRefresh: true,
      hasloading: true,
      // mytable: this.$refs.refTable,
    };
  },
  methods: {
    //事件处理器
    loadMore: function () {
      let that = this;
      if (that.searchinput) {
        that.totalPage++;
        getListData(that.searchinput, that.totalPage * 10, (params) => {
          if (params.code == 1001) {
                //做数据处理
            var data = params.data.reverse();
            var thislist = that.matchlist.reverse();
            thislist = thislist.concat(data);
            //赋值新数据
            that.matchlist = thislist.reverse();
            that.$message.success('加载成功!');
          } else {
            that.$message({
              type: 'error',
              message: params.data,
            });
          }
        });
      } else {
        that.$message({
          type: 'error',
          message: '查询不能为空!',
        });
      }
    },
    
   
    searchEnterFun: function (e) {
      //input 输入 enter
      let that = this;
      if (e) {
        var keyCode = window.event ? e.keyCode : e.which;
      } else {
        let rname = that.$route.query.name;
        if (rname) that.searchinput = rname;
      }

      // console.log('CLICK', this.input, keyCode)
      //  console.log('回车搜索',keyCode,e);
      if (that.searchinput) {
        that.searching = true;
        getRoleData(that.searchinput, function (msg) {
          //console.log(msg);
          setTimeout(() => {
            that.searching = false;
            that.hasSearch = true;
            //访问接口获取成功以后再改变状态;
            that.$message.success('搜索成功!');
            that.roleinfo = msg.Role;
            that.matchlist = msg.List;
            that.rolerank = msg.Rank;
            //that.tableListener();
          });
        });
      } else {
        that.$message({
          type: 'error',
          message: '查询不能为空!',
        });
      }
    },
  },
  watch: {
    $route: 'searchEnterFun',
  },

};
</script>
const getListData = (name, index, callback) => {
    let url = portUrl + 'getlistdata/getList?name=' + name + '&index=' + index;
    axios.get(url).then(num => {
        if (num.data.code == 1001) {
            callback && callback(num.data);
        } 
    })
}

控制台检查表数据的时候发现数据已经变化了,但是就是报错。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
<span>{{scope.row.matchInfo.UsedTime}}</span>

matchInfo为undefined,检查一下返回的数据


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...