ngsl8755 2022-03-14 10:41 采纳率: 70%
浏览 168
已结题

vue set后的值如何赋值给变量

鼠标滚动加载页面,如果在data中定义list,没有问题,因为需要加判断初始值,所以在computed中进行定义,但是操作后,新的值newVal并没有赋给list
<div v-else class="cardLists" v-load-more="loadMore">
    <a-row :gutter="16">
       <a-col :span="8" v-for="(item, idx) in list" :key="idx">
         
         <a-card :bordered="true">
           <span slot="title">
             {{ hosData[idx].hospitalCode + ' ' +  hosData[idx].hospitalName }}
           </span>
           <span slot="extra">
             <a-button 
               type="link" 
               @click="onClick(hosData[idx].hospitalName, hosData[idx].hospitalCode, $event)">
               筛查
             </a-button>
           </span>
           <span class="n-Level" :class="nameMap[hosData[idx].hospitalLevel]">
             <span>{{ hosData[idx].hospitalLevel }}</span>
           </span>
           <a-descriptions>
             <a-descriptions-item label='结算数据'>
               {{ hosData[idx].hisCount }}
             </a-descriptions-item>
           </a-descriptions>
         </a-card>
         
      </a-col>
     </a-row>
  </div>

export default {
  computed: {
    list: {
      get() {
        if(this.hosData.length < 30) {
          return this.hosData.length
        } else {
          return 30
        }
      },
      set(newVal) {
        console.log('newVal:');
        console.log(newVal);
        return newVal
      }
    }
  },
directives: {
    /* 通过判断 滚动距离 >= 子级高度 - 自身高度,如果为true则认为到达底部 */ 
    loadMore: {
      inserted(el, binding) {
        
        const scrollFn = () => {
          // 子级高度
          let scrollH = 0;
          $(el).children().each((idx, item) => {
            scrollH += $(item).get(0).offsetHeight
          });

          let wrapH = $(el).height(); // 自身高度
          let scrollT = $(el).scrollTop(); // 滚动距离
          let isBottom = scrollT >= scrollH - wrapH;
          if (isBottom) {
            binding.value && binding.value()
          }
        };
        $(el).on('scroll', _.throttle(scrollFn, 500))
      }
    }
  },
  methods: {
    loadMore() {
      console.log("this.list:");
      console.log(this.list);
      this.list += 30;
    }
  }
}

img

因为没有赋值,改过代码
      set(newVal) {
        console.log('newVal:');
        console.log(newVal);
        list = newVal
      }

结果会报错

img

不知道最终应该如何操作,请指教!
  • 写回答

2条回答 默认 最新

  • _念_ 2022-03-14 11:23
    关注

    设置值的时候 只是会调用set方法 但是你获取到的list 始终是get方法的放回值 比如说 this.list = 100;但是你的hosdata的长度大于30,那么取list的值的时候,结果是30;
    按照你这个写法,你的list永远都是一个固定的值。看了你的代码,你应该是要做一个滚动加载的。
    定义一个当前页pageIndex, 每页大小pageSize,直接循环你的hosData,循环的时候判断v-if="idx < pageIndex * pageSize",滚动的回调里面pageIndex ++ 就好了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月25日
  • 已采纳回答 3月21日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 帮我解决一下膳食平衡的线性规划模型的数据实例
  • ¥40 万年历缺少农历,需要和阳历同时显示
  • ¥250 雷电模拟器内存穿透、寻基址和特征码的教学
  • ¥200 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥15 关于Java的学习问题
  • ¥15 如何使用chatgpt完成文本分类任务?
  • ¥15 已知速度v关于位置s的等式,怎么转化为已知位置求速度v的等式
  • ¥15 我有个餐饮系统,用wampserver把环境配置好了,但是后端的网页却进去,是为什么,能不能帮远程一下?
  • ¥15 R运行没有名称为"species"的插槽对于此对象类"SDMmodelCV"
  • ¥20 基于决策树的数字信号处理,2ask 2psk 2fsk的代码,检查下报错的原因