Bagaimana untuk melakukan pemaparan bersyarat dalam Vue
P粉702946921
P粉702946921 2024-04-01 19:36:54
0
1
469

Saya sedang membangunkan apl yang boleh digunakan untuk membuat tugasan dan memasukkannya ke dalam senarai untuk menjejakinya dengan cekap. Saya telah mencipta senarai dan tugasan dalam senarai.

Saya cuba memberikan semua tugasan yang tergolong dalam senarai dalam senarai. Walau bagaimanapun, apabila saya menulis kod vue untuk ini, saya menghadapi masalah. Daripada memberikan tugasan yang hanya tergolong dalam senarai itu, kod saya menjana semua tugas dalam pangkalan data. Bolehkah seseorang membantu saya mencari cara yang betul untuk memberikan tugasan yang berada dalam senarai tertentu sahaja?

DashboardView.vue

<template>
  <div class="dashboard">
    <Navbar class="navbar__dash" />
    <h1 class="dashboard__welcome">Welcome {{ name }}</h1>
    <div class="listview">
      <div class="no__lists" v-if="len_list === 0">
        <h2 class="no_lists">There are No lists here tap to add</h2>
      </div>
      <div class="has__lists" v-else>
        <div class="all__lists" v-for="(item, index) in items" :key="index">
          <div class="list">
            <div class="title">
              <div class="title__options">
                <h1 class="list_name">{{ item[0].list_name }}</h1>
                <Dropdown />
                <!-- V-menu -->
                <!--menu ends-->
              </div>
            </div>
            <div class="body">
              <div class="no_tasks" v-if="item[0].no_of_tasks === 0">
                <h3>There are no tasks added yet</h3>
                <router-link
                  class="createList"
                  :to="`/createTask/${id}/${item[0].list_id}`"
                >
                  <fa class="list_plus" icon="fa-solid fa-plus" />
                </router-link>
              </div>
              <div class="has_tasks" v-else>
                <h4>Here are your tasks</h4>
                <div class="tasks" v-for="(item, index) in items" :key="index">
                  <div
                    class="tasksforthis"
                    v-for="(task, index1) in item[1]"
                    :key="index1"
                  >
                    <div
                      class="filtered__tasks"
                      v-if:="`{{ item[0].list_id }} == {{ task.list_id }}`"
                    ></div>
                  </div>
                </div>
                <router-link
                  class="createList"
                  :to="`/createTask/${id}/${item[0].list_id}`"
                >
                  <fa class="list_plus" icon="fa-solid fa-plus" />
                </router-link>
              </div>
            </div>
            <div class="footer">
              Number of Completed tasks: {{ item[0].no_completed }}/{{
                item[0].no_of_tasks
              }}
            </div>
          </div>
        </div>
      </div>
      <router-link :to="`/createList/${id}`">
        <fa class="plus__icon" icon="fa-solid fa-plus" />
      </router-link>
    </div>
  </div>
</template>

<script>
import axios from 'axios';
import Dropdown from '@/components/DropdownList.vue';
import Navbar from '../components/NavBar.vue';
export default {
  name: 'DashboardView',
  data() {
    return {
      name: localStorage['name'],
      len_list: 0,
      items: [],
      id: localStorage['id'],
    };
  },
  methods: {
    getTrackers() {
      const path = 'http://localhost:5000/dashboard/' + localStorage['id'];
      axios
        .get(path)
        .then((res) => {
          this.items = res.data.list;
          this.len_list = res.data.list[0][0]['len_list'];
          console.log(res.data.list);
          for (let i = 0; i < res.data.list.length; i++) {
            console.log(res.data.list[i][1]);
            for (let j = 0; j < res.data.list[i][1].length; j++) {
              if (
                res.data.list[i][1][j]['list_id'] ==
                res.data.list[i][0]['list_id']
              ) {
                console.log(res.data.list[i][1][j]['title']);
                console.log(res.data.list[i][0]['list_id']);
              }
            }
          }
        })

        .catch((err) => {
          console.log(err);
        });

      console.log(this.items);
    },
  },
  components: {
    Navbar,
    Dropdown,
  },
  created() {
    this.getTrackers();
  },
};
</script>


Saya menerima data dalam papan pemuka melalui format JSON. Contoh data boleh jadi:

Kod saya pada masa ini kelihatan seperti ini:

Tetapi saya mahu tunggakan mengandungi tugas GO dan Amaterasu, Heisenberg hanya perlu menunjukkan tugas GO, Baharu dan AK dsb. I.e. saya hanya mahu senarai memberikan tugasan yang mengandunginya sahaja. Ia akan sangat membantu saya jika seseorang boleh memberitahu saya cara untuk menyampaikannya dengan betul.

P粉702946921
P粉702946921

membalas semua(1)
P粉966979765

Ralat muncul dalam kod ini


Gelung v-for pertama melalui setiap item anda (anda sudah melakukan ini menggunakan v-for di atas dengan class="all__lists" pada div untuk menunjukkan kad senarai anda), gelung v-for kedua Pergi melalui setiap projek tugasan.

Alih keluar v-for pertama seperti yang ditunjukkan di bawah


Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan