vue渲染数据页面显示undefined

我这里接口当中这个字段有数据,前端代码当中也写的是对的,但是页面显示是undefined,这个是为什么

img

img

img

看这个应该是字段名称取错了吧

1、写代码尤其是table表格这一类的记得刷新数据缓存
2、在table的其他单元 使用插槽打印此数据 如果是正常的可以考虑用插槽实现
3、如果2不行、则考虑更新数据的格式 处理为字符串展示 防止由于页面某些逻辑导致数据错乱

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7479105
  • 你也可以参考下这篇文章:vue中data之间数据自调用undefined的问题
  • 除此之外, 这篇博客: 关于 vue 渲染报错:属性 undefined页面可渲染中的 关于 vue 渲染报错:属性 undefined 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • vue-render.png

  • 您还可以看一下 汤小洋老师的Vue.js 2.0之全家桶系列视频课程课程中的 组件间数据传递小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    可能原因:

    1. 数据还没有从后端返回就进行了页面渲染。
    2. 数据字段设置不正确。
    3. 在定义数据的时候,数据没有被初始化。

    解决方案:

    1. 方法一:使用axios发送异步请求。通过axios的请求拦截器进行请求之前的拦截,请求完成后再进行页面渲染。代码如下:
    // 添加请求拦截器
    axios.interceptors.request.use(function (config) {
        // 在发送请求之前做些什么 加载中的图片放在这里即可
        return config;
      }, function (error) {
        // 对请求错误做些什么
        return Promise.reject(error);
      });
    
    1. 方法二:使用watch监听数据,让数据加载完成后再显示DOM,数据获取期间显示加载中。在vue的template中使用v-if和v-else来控制数据是否加载完成。代码如下:
    <template>
        <view>
            <view v-if="dataLoaded">
                {{data}}
            </view>
            <view v-else>
                数据加载中……
            </view>
        </view>
    </template>
    
    watch:{
        data:function(val,oldval){
                if(val!==oldval){
                    this.dataLoaded = true
                }
            }
        },
    
    1. 解决方案三:在定义数据的时候,数据要被初始化。如果是个单一的对象的话,要是提前就知道里面有哪些字段,可以在定义的时候直接显示的声明出来就可以了。如果是数组,可以先定义为空,之后再通过某种操作往里面丢一个一个的对象,字段都在这些对象里面。代码示例如下:
    <template>
         //  ...
        <div v-for="(item,$index) in repetitionList" class="main" :key="$index">
                {{item}}
        </div>
        // ...
    </template>
    
    <script>
        export default {
               data(){
                return{
                    repetitionList: [],
                    item: {},
                    }
               },
               methods: {
                // ...
                insertItemIntoList: function(){
                        var newItem = {...this.item};
                        this.repetitionList.push(newItem);
                    }
               },
        }
    </script>