ตัวแปรที่ไม่ได้กำหนดในส่วนประกอบหน้า Nuxtjs ซึ่งเป็นของหน้าหลัก

ฉันมีสองเส้นทางนี้ /services และ /services/parents และแต่ละหน้าถูกเก็บไว้ในไฟล์ vue ดังนี้:

// ตำแหน่งไฟล์ : "/pages/services/index.vue"

<tr v-for="service in services" :key="service.id">
  <td class="check-col"><input type="checkbox"></td>
  <td class="number-col">{{ service.id }}</td>
  <td>{{ service.name }}</td>
  <td>{{ service.slug }}</td>
  <td>
    <template v-if="service.children.length">
      <template v-for="(child, index) in service.children">
        <nuxt-link :to="'/admin/services/' + child.id" :key="child.id">
          {{ child.name }}
        </nuxt-link>

        <span :key="child.id" v-if="(index+1) < service.children.length">, </span>
      </template>
    </template>

    <span v-else>--</span>
  </td>
</tr>

และในหน้า /services/parents ของฉัน ฉันมี:

// ตำแหน่งไฟล์ : "/pages/services/parents.vue"

<tr v-for="service in services" :key="service.id">
  <td>{{ service.id }}</td>
  <td>{{ service.name }}</td>
</tr>

<script>
export default{
  computed: {
    services() {
      return this.$store.getters['content-lists/services/list']
    }
  },
  async fetch({ store, query }) {
    let page = Number(query.page) || 1
    let perPage = Number(store.getters['content-lists/services/perPage'])
    let offset = (page - 1) * perPage

    const max = await strapi.request('get', '/services/count')
    store.commit('content-lists/services/setMaxPages', max)

    store.commit('content-lists/services/empty')
    const response = await strapi.request('post', '/graphql', {
      data: {
        query: `query {
          services(limit: ${perPage}, start: ${offset}) {
            id
            name
            slug
            children {
              id
              name
            }
          }
        }`
      }
    })

    response.data.services.forEach((service) => {
      store.commit('content-lists/services/add', {
        id: service.id || service._id,
        ...service
      })
    })
  }
}
</script>

เมื่อฉันไปที่หน้าผู้ปกครอง มันทำให้ฉันมีข้อผิดพลาดนี้:

service.children ไม่ได้กำหนดไว้

เกิดข้อผิดพลาดขณะเรนเดอร์เพจ ตรวจสอบคอนโซลเครื่องมือสำหรับนักพัฒนาเพื่อดูรายละเอียด

มันจะเกิดขึ้นเมื่อนำทางด้วย <nuxt-link> เท่านั้น หากคุณพิมพ์ url ในที่อยู่เบราว์เซอร์ มันก็ใช้งานได้ดี ฉันตรวจสอบคอนโซลแล้ว แต่ไม่มีร่องรอยเลย แค่บอกว่า: Type error: service.children is not defined

ฉันขอขอบคุณความช่วยเหลือใด ๆ ล่วงหน้า


person Amin    schedule 30.01.2019    source แหล่งที่มา
comment
ตัวแปรของคุณถูกกำหนดไว้ในข้อมูลของคุณอย่างไร? ฉันต้องการดูว่าบริการมาจากไหนและมีอะไรอยู่ข้างใน   -  person Ferrybig    schedule 02.02.2019
comment
สวัสดี @Ferrybig ฉันได้อัปเดตคำถามแล้ว   -  person Amin    schedule 03.02.2019
comment
ตัวแปรข้อมูลกำหนดไว้ในไฟล์ /pages/services/index.vue อย่างไร โปรดระบุข้อมูลตอบกลับสำหรับตัวแปร services ?   -  person Vasu Kuncham    schedule 03.02.2019
comment
คุณลองแก้ไขบรรทัดนี้ได้ไหม <template v-if="service && service.children.length">   -  person gleam    schedule 04.02.2019
comment
อาจเกี่ยวข้องกัน (asyncData เทียบกับการดึงข้อมูล) - อาจเป็น 1) การนำทางไปยัง nuxt-link ไม่ได้ดึงข้อมูลสำหรับส่วนประกอบ (ตรวจสอบที่จัดเก็บ vuex) 2) อาจเป็นไปได้ว่า service.children ไม่ได้ถูกกำหนดตามที่ระบุไว้ข้างต้น - ดังนั้น service?.children หรือ service.hasOwnProperty("children") อาจ ความช่วยเหลือ stackoverflow.com/questions/49251437/   -  person Denis Tsoi    schedule 08.02.2019