vue报一些莫名其妙的错误

我从后台获取了数据以后 使用v-for 去循环列表 item就是 in前面的那个变量 明明有数据,列表也可以渲染出来 但是一直报错 说item没有在data里声明 这是为什么呢 v-for的 in前面的变量不需要声明啊

下面的status也是 明明返回的数据里有status 还是报undefined
这可能是什么原因造成的呢 愁死了 解决不了这个问题
图片描述

div v-if="sanDetail" class="prot" v-for="item in totalPage">

                            <div class="prot_h">
                                <h1>{{item.name}}</h1>  
                                <img src="../../../assets/images/invest/tuij.jpg" height="26" width="74" alt="">
                            </div>
                            <div class="details clearfix">
                                <div class="interest">
                                <p v-if="item.status != 2 && item.activityRate <= 0">
                                    <big>{{item.repayRate.toFixed(2)}}</big>%
                                </p>
                                <p 
                                  class="rate" 
                                  v-if="item.status == 2 &&   item.activityRate > 0"
                                  >
                                    <big>{{item.repayRate.toFixed(2)}}</big> %
                                </p>
                                <p 
                                  class="rate" 
                                  v-if="item.status == 2 && item.activityRate <= 0"
                                  >
                                    <big>{{item.repayRate.toFixed(2)}}</big>%
                                </p>
                                <p 
                                  v-if="item.status != 2 && item.activityRate > 0"
                                  >
                                    <big>{{item.repayRate.toFixed(2)}}</big>%
                                </p>
                                <span>预期年化收益</span>
                            </div>
                            <div class="date">
                                <p 
                                  v-if="item.status == 2 && item.periodUnit == 0">
                                    <big class="big">{{item.period}}</big>天
                                </p>
                                <p v-if="item.status == 2 && item.periodUnit == 1">
                                    <big class="big">{{item.period}}</big>个月
                                </p>
                                <p v-if="item.status == 2 && item.periodUnit == 2">
                                    <big class="big">{{item.period}}</big>年
                                </p>
                                <!---->
                                <p 
                                  v-if="item.status != 2 && item.periodUnit == 0">
                                    <big>{{item.period}}</big>天
                                </p>
                                <p v-if="item.status != 2 && item.periodUnit == 1">
                                    <big>{{item.period}}</big>个月
                                </p>
                                <p v-if="item.status != 2 && item.periodUnit == 2">
                                    <big>{{item.period}}</big>年
                                </p>
                                <span>投资期限</span>
                            </div>
                            <div class="total">
                                <p><big>{{item.releaseAmount}}</big>元</p>
                                <span>产品总额</span>
                            </div>
                            <div class="percentage">
                                <div :data-value="percent"></div>
                            </div>
                            <router-link 
                              to="invest/detail" 
                              v-if="item.status == 2">
                              立即投资
                            </router-link>
                            <router-link 
                              to="invest/detail" 
                              v-if="item.status == 3"
                              class="btn"
                              >
                              已投满
                            </router-link>
                            <router-link 
                              to="invest/detail" 
                              v-if="item.status == 4"
                              class="btn"
                              >
                              还款中
                            </router-link>
                            <router-link 
                              to="invest/detail" 
                              v-if="item.status == 5"
                              class="btn"
                              >
                              已完成
                            </router-link>
                           </div>

</div>

........export default.......
export default {

    data() {
        return {
              idx: 0, 
              currentIndex: '',
          productCategories: [],
          sanDetail: [],
          zhaiDetail: [],
          percent: '',
          totalPageCount: 0,// 总页数
          pageSize: 5, // 每页显示5条数据
          totalPage: [], //所有数据
          allData: 0 // 所有数据条数
        }
    },
  created() {
      // 初始化
      storageUtil.set("tab", "散标")
      this.getSanDetail()
      // 获取产品分类
      product.getProductCategory().then((res) => {
          let productCategoryId = Number(urlUtil.getUrlArgObject().productCategoryId)
          if(isNaN(productCategoryId)) {
              productCategoryId = 0
          }
          this.productCategories = res.data
          this.productCategories.unshift('')
      })
  },
  methods: {
        // 理财专区和债转专区切换
        tabSwitch(index,evt) {
          this.idx = index
          if(this.idx == 0) {
              storageUtil.set('tab', '散标')
              this.historyProductId('SanCategoryId', evt)
          }else if(this.idx == 1) {
              storageUtil.set('tab', '债权转让')
              this.historyProductId('ZhaiCategoryId', evt)
          }
        },
        // 产品分类留痕
      historyProductId(id,ev) {
          let categoryId = storageUtil.get(id)
          if(categoryId != null) {
             ev.target.setAttribute('data-id',categoryId)
          }
      },
        // 选择产品分类
      selectProduct(index,evt) {
          this.currentIndex = index
          let productCategoryId = evt.target.getAttribute('data-id')
          storageUtil.get('tab') == '散标' ? 
              storageUtil.set('SanCategoryId', productCategoryId) : 
                storageUtil.set('ZhaiCategoryId', productCategoryId)
          this.getSanDetail()
      },
      // 获取散标数据
      getSanDetail() {
          let productCategoryId = storageUtil.get('SanCategoryId') != null ? storageUtil.get('SanCategoryId') : 0
          product.getProductList(productCategoryId).then((res) => {
                console.log(res)
              this.sanDetail = res.data.list
              this.allData = res.data.list.length
              // 计算总页数
              this.totalPageCount = this.allData % this.pageSize != 0 
                                  ? parseInt(this.allData / this.pageSize) + 1
                                  : parseInt(this.allData / this.pageSize);
              this.pageTurning()

              for(let i = 0; i < this.sanDetail.length; i++) { 
                  let str = this.sanDetail[i].amountNow / 
                            this.sanDetail[i].releaseAmount * 100 +''
                  if(this.sanDetail[i].status == 2) {
                      if(str.indexOf('.') > 0) {
                        this.percent = Number(str) < 1 ? '1' : Math.floor(str) + ''
                    }else {
                        this.percent = str + '';
                    }
                  }else {
                      this.percent = '100'
                  } 
              }
          })
      },
      // 获取债权转让数据
      getTransferList() {
           let productCategoryId = storageUtil.get('ZhaiCategoryId') != null ? storageUtil.get('ZhaiCategoryId') : 0
           product.getTransferrAcceptanceList(productCategoryId).then((res) => {
                   this.zhaiDetail = res.data.list
                   for(let i = 0; i < this.zhaiDetail.length; i++) { 
                  let str = this.zhaiDetail[i].cuAmount / 
                            this.zhaiDetail[i].releaseAmount * 100 +''
                  if(this.zhaiDetail[i].status == 2) {
                      if(str.indexOf('.') > 0) {
                        this.percent = Number(str) < 1 ? '1' : Math.floor(str) + ''
                    }else {
                        this.percent = str + '';
                    }
                  }else {
                      this.percent = '100'
                  } 
              }
           })
      },
      // 分页
      pageTurning() {
            if(this.totalPageCount > 1) {
                this.totalPage = this.sanDetail.slice(0, this.pageSize)
            }else {
                this.totalPage = this.sanDetail
            }
      },
      changePage(index) {
          let _start = ( index - 1 ) * this.pageSize;
          let _end = index * this.pageSize;
          this.totalPage = this.sanDetail.slice(_start, _end)
      }
  },
  components: {
      Page
  }

}

阅读 5.2k
3 个回答

返回的数据有,不代表你已经声明了

vfor那个问题你要看文档

vfor

<li class="xbutton" v-for="(i,index) in res" :key="i.number" ref="listNum" @click="change(index)">{{i.number}}</li>这是v-for 您看一下 是不是有其他问题 建议多看vue 官方文档 初学者 建议多看 或者下载一个饿了么 这个项目 多参考

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题