【问题标题】:how to fetch object with object如何使用对象获取对象
【发布时间】:2023-02-05 21:09:13
【问题描述】:

我正在尝试从数据表的列表中获取名称。所以,下面是我编写的代码。

HTML 模板 -

<v-data-table :headers="headers" :items="topics" :footer-props="{'items-per-page-options': [5, 10, 20, 40]}" :items-per-page="10" item-key="srno">
   <template v-slot:item.skillName="{ item }">
       <span>{{ item.skillName || '-' }}</span>
   </template>
</v-data-table>
export default {
  data () {
    return {
      skills: [
        {
          name: ''
        }
      ],
      topics: [],
      headers: [
        { text: 'Sr No', value: 'srno', align: 'center', sortable: true },
        { text: 'Skills', value: 'skills', align: 'center' },
      ],
      skillName: [],
    }
  },
  created: async function () {
    await this.getAllList()
  },
  methods: {

    getAllList: async function () {
      try {
        this.isLoading = true
        let r = []
        let res = await http.get(`${CONSTANTS.API_URL}/api/getall-themes`, {
          params: {
            page: this.page - 1,
            size: this.pageSize
            // search: this.search
          }
        })
        this.topics = res.data.rows.map((item, index) => {
          item.srno = this.pageSize * (this.page - 1) + index + 1
          item.skillName = item.Skills ? item.Skills.name : '-'
          return item
        })
              this.totalPages = res.data.totalPages
      } catch (e) {
        const errorMessage = (e && e.response && e.response.data.message) || e.message
        this.errMsg(errorMessage)
      } finally {
        this.isLoading = false
      }
    },

错误 - skillName 未定义。

预期输出 - 写作,唱歌应该进入技能名称

【问题讨论】:

    标签: javascript vue.js vuetify.js


    【解决方案1】:

    您不要在标头中声明 skillnName 列,仅声明 skills

    尝试:

    export default {
      data () {
        return {
          ...
          headers: [
            { text: 'Sr No', value: 'srno', align: 'center', sortable: true },
            { text: 'Skills',
               value: 'skills', // <---- probably should be skillName
               align: 'center' },
          ],
        }
      },
    

    或者

    <v-data-table :headers="headers" :items="topics" :footer-props="{'items-per-page-options': [5, 10, 20, 40]}" :items-per-page="10" item-key="srno">
       <template v-slot:item.skills="{ item }"> <!-- <-------- slot name should match header.value -->
           <span>{{ item.skillName || '-' }}</span>
       </template>
    </v-data-table>
    

    另外,根据你的数据,你想在这里使用一个数组,所以你需要从它创建一些可打印的东西。在模板中尝试类似 {{ item.Skills.map(s =&gt; s.name).join(',') || '-' }} 的内容。

    【讨论】:

    • 更改值但仍显示未定义
    • @kiran 刚刚更新了它,{{ item.name || '-' }} 有效吗?
    • @mortiz 它的 id 将作为音乐主题。下面还有一个名为 name 的元素,它取了它的值
    • @kiran 对,没有看到 Skills 是您的行数据的数组属性。检查更新的答案
    • @Mortiz 完美!现在它的工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 2019-06-06
    • 2022-01-21
    • 2021-10-28
    相关资源
    最近更新 更多