私は、jQueryプロジェクトを段階的に更新する目的でVueJSを試していますが、親コンポーネントのデータを渡す子コンポーネントの問題があります。VueJS - Ajaxの後の親データの更新
私の親コンポーネントが
// parent_component.js
var parentData = {};
var parentComponent = Vue.component('parentComponent', {
data: function() {
return {
parentData: _parentData
}
},
delimiters: ['((', '))']
})
$.ajax({
url: '/someUrl/',
success: function(response) {
_parentData = response
}
私の子コンポーネントがある:
// child_component.js
Vue.component('child-component', {
template: '<div>((data.someProp))</div>'
props: ['data'],
delimiters: ['((', '))']
})
私のHTMLは次のとおりです。
// index.html
<parent-component inline-template>
<child-component v-bind:data="parentData"></child-component>
</parent-component>
この私が初期化した後_parentData
権利を更新するとき、すべてが正常に動作しますchildComponentしかし、実際にはAjax呼び出しを行い、_parentDataを更新する必要がありますが、childComponentでは更新されません。
Nb。 _parentDataオブジェクトがAjax呼び出しのコールバックにあることを確認しました。
また、私はchildComponentのcreated
オプションにAjaxコールを入れようとしましたが、これは役に立ちませんでした。
私には何が欠けていますか?
更新
私は、古典的な初心者のミスをしたと思います!前述のようにhere、Vue cannot detect property addition
。したがって、非同期呼び出しを行う前に、_parentDataにsomeProp
プロパティを定義する必要があります。
したがって、私がvar parentData = { someProp: '' };
を定義するとうまくいきます。
このフィドルを参照してください:https://jsfiddle.net/maaikeb/anr1e88n/
'success:response => this.parentData = response'です。 – Bert