这似乎是一个相当基本的问题,但我似乎无法找到一个明确的(或甚至是工作)的答案。Vue.js - 从组件中的根实例访问数据
我有我的根实例:
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();
}
});
而且我有,我想列出存储在根实例的事件的独立部件。目前看起来像这样:
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();
}
}
这似乎不起作用。我也试过this.$root.events
无济于事。什么是正确的方式去做这件事?请记住,我想从根引用数据,而不是使用自己的作用域创建副本。
编辑:尝试使用道具,这里是列表组件,这也是不工作:
var EventsList = Vue.extend({
template: '<ul><li v-for="event in events"><h2>{{ event.title }}</h2><p>{{ event.body }}</p></li></ul>',
props: ['events']
}
确定你不想使用与道具的双向同步?这样,你就不必紧密结合这两个组件。 – nils
对不起,我对此很新。你能解释一下你的意思吗?我把这些事件放在根实例中,因为我希望将它们用在许多组件中。 – Chris
这些组件是否会更改“事件”,还是只读?我会在一秒内解释。 – nils