Rumah  >  Soal Jawab  >  teks badan

"Ralat 'blogItems' tidak ditentukan" semasa cuba menolak kemas kini kepada pembolehubah data Vue

Saya cuba mendapatkan semua siaran daripada Firebase dan menambahkannya pada tatasusunan, tetapi saya mendapat ralat berikut:

Uncaught (in promise) TypeError: Cannot read property 'blogItems' of undefined

Ini skripnya:

export default {
    data(){
      return{
        blogItems: []
      }
    },
    mounted(){
      this.getPosts();
    },
    methods:{

      getPosts(){

        database.collection('blog').doc('yP6aYXvisFbTsqtQ3MEfuyz6xYE3').collection('posts').get().then(snapshot =>{

          const posts = snapshot.docs.map(doc => doc.data())
          posts.forEach(function(post){
            this.blogItems.push(post.content)
          })
        })
        
      },

    }

  }

P粉262073176P粉262073176422 hari yang lalu523

membalas semua(1)saya akan balas

  • P粉835428659

    P粉8354286592023-09-16 00:09:32

    Dalam kes anda, itu adalah this.blogItems中的this更改为posts.

    Anda ada dua penyelesaian

    1. Simpan this ke dalam pembolehubah dan gunakannya

      getPosts(){
        let tis = this;
      
       database.collection('blog').doc('yP6aYXvisFbTsqtQ3MEfuyz6xYE3').collection('posts').get().then(snapshot =>{
      
         const posts = snapshot.docs.map(doc => doc.data())
         posts.forEach(function(post){
           tis.blogItems.push(post.content)
         })
       })
      
       },

    1. Gunakan fungsi anak panah

      getPosts(){
      
       database.collection('blog').doc('yP6aYXvisFbTsqtQ3MEfuyz6xYE3').collection('posts').get().then(snapshot =>{
      
         const posts = snapshot.docs.map(doc => doc.data())
         posts.forEach((post) => {
           this.blogItems.push(post.content)
         })
       })
      
       },

    balas
    0
  • Batalbalas