Điều này có vẻ giống như một câu hỏi khá cơ bản nhưng tôi dường như không thể tìm thấy câu trả lời dứt khoát (hoặc thậm chí làm việc).Vue.js - truy cập dữ liệu từ thể hiện gốc trong thành phần
Tôi có ví dụ gốc của tôi:
var vm = new Vue({
el: '#app',
// Data
data: {
events: {}
},
// Methods
methods: {
fetchEvents: function(){
this.$http.get('/api/events').success(function(theseEvents) {
this.$set('events', theseEvents);
}).error(function(error) {
});
}
},
ready: function(){
this.fetchEvents();
}
});
Và tôi có một thành phần riêng biệt trong đó tôi muốn ra khỏi danh sách các sự kiện được lưu trữ trong trường hợp root. Tại thời điểm này có vẻ như sau:
var EventsList = Vue.extend({
template: '<ul><li v-for="event in events"><h2>{{ event.title }}</h2><p>{{ event.body }}</p></li></ul>',
data: function(){
return {
events: {}
}
},
methods: {
syncEvents: function(){
this.$set('events', this.$parent.events);
}
},
// When ready...
ready: function(){
this.syncEvents();
}
}
Điều này dường như không hiệu quả. Tôi cũng đã thử sử dụng this.$root.events
để không có kết quả. Cách chính xác để đi về điều này là gì? Ghi nhớ Tôi muốn tham khảo dữ liệu từ gốc, không tạo ra một bản sao với phạm vi riêng của nó.
EDIT: cố gắng sử dụng đạo cụ, đây là thành phần danh sách, đó cũng không phải là làm việc:
var EventsList = Vue.extend({
template: '<ul><li v-for="event in events"><h2>{{ event.title }}</h2><p>{{ event.body }}</p></li></ul>',
props: ['events']
}
Bạn có chắc chắn bạn không muốn sử dụng đồng bộ hai chiều với đạo cụ? Bằng cách đó, bạn sẽ không phải kết hợp chặt chẽ hai thành phần. – nils
Xin lỗi tôi khá mới với điều này. Bạn có thể giải thích ý của bạn không? Tôi đặt các sự kiện trong trường hợp gốc như tôi sẽ muốn sử dụng chúng trong nhiều thành phần xuống dòng. – Chris
Các thành phần đó có thay đổi 'sự kiện' hoặc nó sẽ là chỉ đọc không? Tôi sẽ giải thích trong giây lát. – nils