"Ralat 'blogItems' tidak ditentukan" semasa cuba menolak kemas kini kepada pembolehubah data Vue
P粉262073176
P粉262073176 2023-09-15 23:28:14
0
1
561

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粉262073176
P粉262073176

membalas semua(1)
P粉835428659

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)
       })
     })
    
     },
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan