これはかなり基本的な質問のように思えるが、私は決定的な(あるいは作業)答えを見つけるように見えることはできません。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
を無駄にしようとしました。これについて正しい方法は何ですか?私は自分のスコープでコピーを作成するのではなく、ルートからデータを参照したいと思います。
編集:私はあなたが合格
http://vuejs.org/guide/components.html#Props
:のために何を "小道具" をだ
var EventsList = Vue.extend({
template: '<ul><li v-for="event in events"><h2>{{ event.title }}</h2><p>{{ event.body }}</p></li></ul>',
props: ['events']
}
がよろしいですあなたは小道具と双方向の同期を使いたくないのですか?そうすれば、2つのコンポーネントを緊密に結合する必要はありません。 – nils
申し訳ありませんが、これはかなり新しいです。あなたは何を意味するのか説明できますか?私は行の下の多くのコンポーネントでそれらを使用したいので、イベントをルートインスタンスに入れます。 – Chris
これらのコンポーネントは 'events'も変更するのでしょうか、それとも読み取り専用になりますか?私は秒で説明します。 – nils