2017-07-10 29 views
6

Tôi có 2 thành phần: PostComments.Vue.js chuyển đạo cụ đến dữ liệu

Thành phần bên trong bài đăng, có thành phần Nhận xét có 3 đạo cụ: postId, numCom (số nhận xét) và comments (mảng).

tôi nhận được ý kiến ​​và tôi vượt qua mảng với đạo cụ, và bây giờ tôi muốn lấy mảng trong Comments thành phần và thêm nó vào dữ liệu vì vậy tôi sau đó có thể thêm/xóa bình luận, vv

Dưới đây là mã của tôi trong Comments.vue:

props: ['id', 'numCom', 'comments'], 
data: function() { 
    return { 
    newMessage: "", 
    loading: false, 
    allComments: this.comments, 
    num: this.numCom, 
    } 
}, 

Nhưng điều này không hiệu quả. Trong công cụ nhà phát triển Vue tôi có thể thấy rằng comments chống đỡ được lấp đầy với các nhận xét, nhưng mảng allComments trống.

Tôi nên làm gì?

+0

Bạn có chắc chắn rằng 'prop comments' có giá trị tại thời điểm thành phần được tạo ra? –

+0

Chúng tôi sẽ cần xem thêm mã vì tôi đã vẽ cùng một ví dụ và nó làm việc cho tôi. https://jsfiddle.net/7xxwq1e2/18/ – Stephen

+0

@ DecadeMoon vâng, có một chút chậm trễ, bởi vì tôi đang làm GET yêu cầu, sau đó điền vào các đạo cụ ... Làm thế nào tôi nên giải quyết này? Tôi có thể làm một yêu cầu GET bên trong thành phần Comments, nhưng làm thế nào tôi có thể kích hoạt một hàm trong thành phần Comments từ Post controller khi tôi hiển thị một bài viết mới? –

Trả lời

6

Dường như comments chống đỡ không có giá trị tại thời điểm tạo thành phần (đây là lần duy nhất allComments sẽ được đặt).

Bạn có thể:

  1. Hoãn việc tạo ra các thành phần cho đến khi comments prop sẵn sàng bằng cách sử dụng v-if như thế này:
<comments v-if="comments" :comments="comments"></comments> 
  1. Xem các thay đổi đối với comments chống và đặt allComments thành giá trị mới (ngoài việc khởi tạo allComments trong hàm dữ liệu):
watch: { 
    comments(value) { 
    this.allComments = value; 
    } 
} 
+0

Đã hoạt động hoàn hảo. Cảm ơn! –

Các vấn đề liên quan