情深忆往缠绵 2023-04-05 22:21 采纳率: 44.6%
浏览 41
已结题

vue的computed如何传值


<template>
  <table>
    <tr>
      <td colspan="4">全校学生统计表</td>
    </tr>
    <tr>
      <td>年级</td>
      <td>班级数量</td>
      <td>班级人数</td>
      <td>年级人数</td>
    </tr>
  </table>
  <table v-for="(index) in nj" :key="index">
    <tr>
      <td>{{ nj[index] }}</td>
      <td>{{ bjCount[index] }}</td>
      <td>{{ bjNumber[index] }}</td>
      <td>{{ njNumber(index) }}</td>
    </tr>
  </table>
  <div>总计:{{ Count }}</div>
</template>

<script setup>
import { computed } from 'vue'

const nj = [1, 2, 3, 4, 5, 6]
const bjCount = [3, 4, 3, 4, 4, 5]
const bjNumber = [30, 35, 40, 35, 40, 30]
let value

const njNumber = (index) => {
  value = computed(() => {
    return bjCount[index] * bjNumber[index]
  })
}

const Count = () => {
  let count = 0
  for (let i = 0; i < nj.length; i++) {
    njNumber(i)
    count += value
  }
  return count
}

</script>

<style scoped>
table {
  margin: 0 auto;
}

td {
  border: black solid 1px;
  width: 100px;
}
</style>


为啥我的预览结果是这样的,谁能 帮我看下什么问题

img

  • 写回答

2条回答 默认 最新

  • 明月落乌江 2023-04-06 08:34
    关注

    computed应该被用于创建计算属性,而不是在计算属性中使用

    
    <template>
        <table>
            <tr>
                <td colspan="4">全校学生统计表</td>
            </tr>
            <tr>
                <td>年级</td>
                <td>班级数量</td>
                <td>班级人数</td>
                <td>年级人数</td>
            </tr>
        </table>
        <table v-for="(item,index,key) in nj" :key="index">
            <tr>
                <td>{{ nj[index] }}</td>
                <td>{{ bjCount[index] }}</td>
                <td>{{ bjNumber[index] }}</td>
                <td>{{ njNumber(index) }}</td>
            </tr>
        </table>
        <div>总计:{{ Count }}</div>
    </template>
    
    <script setup>
    import { computed } from 'vue'
    
    const nj = [1, 2, 3, 4, 5, 6]
    const bjCount = [3, 4, 3, 4, 4, 5]
    const bjNumber = [30, 35, 40, 35, 40, 30]
    
    const njNumber = (index) => {
        return bjCount[index] * bjNumber[index]
    }
    
    const Count = computed(() => {
        let count = 0
        for (let i = 0; i < nj.length; i++) {
            count += njNumber(i)
        }
        return count
    })
    </script>
    
    <style scoped>
    table {
        margin: 0 auto;
    }
    
    td {
        border: black solid 1px;
        width: 100px;
    }
    </style>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月7日
  • 已采纳回答 4月6日
  • 创建了问题 4月5日

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了