実行順序に問題があります。メインのVueインスタンスは、内部のものがコンパイルされるまで「準備ができていません」。これには、hello
コンポーネントが含まれます。
bar
が使用される前に設定されていることを知る必要がある場合は、いくつかの点でそれを監視できます。 bar
がロードされたことを子供に知らせるために、親のイベント$broadcast
を実行できます。または、bar
が更新されたときに子コンポーネントのwatch
関数を使用して変更を加えることができます。
あなたの例では、あなたがgreeting
は子供のready()
機能の間に準備ができていないという事実を説明するために必要なので、とにかく遅延を持っているつもりだvue-resource
でしかし、もしあなたが$set
bar
created()
で働くありません。 greeting
がundefined
である可能性があるという事実を処理するためにはDOM構造を設計するか、イベントまたはwatch
関数を使用して自分で待機する必要があります。 $broadcast
と
例:
Vue.component('hello', {
template: 'From hello tag: {{ greeting }}',
props: ['greeting'],
ready: function() {
},
events:{
'bar-ready':function(){
alert(this.greeting)
}
}
});
new Vue({
el: '#app',
created: function() {
this.$http.get('/path')
.then(function(response){
this.$set('bar',response.data);
this.$broadcast('bar-ready')
}.bind(this))
}
});
$broadcast
ドキュメント:https://vuejs.org/api/#vm-broadcast
は以前のコメントを無視し、それは私の一部にだけタイプミスでした。放送システムはすべて私のために働いていた。ありがとう! – fpcjh