Vue と axios を使用してページを更新せずにデータを更新する
<p>Vue と Axios で作成した 2 つのタブ (質問とデータ) を持つページがあります。
最初のタブでフォームに記入して送信します - 保存ボタン <strong>v-on:click="save"</strong>。 </p>
<pre class="brush:php;toolbar:false;">save: function() {
axios({
メソッド: 'パッチ'、
URL: URL、
データ: this.data
})
.then(関数 (応答) {
this.data = 応答.data;
}</pre>
<p>2 番目のタブ (データ) には、保存されたデータのリストがあります。</p>
<pre class="brush:php;toolbar:false;">mounted() {
アクシオス
.get('/api/recommended-products/?patient_uuid=' '{{patient.uuid}}')
.then(response => (this.data= response.data.results))
}</pre>
<p>これで、[質問] タブの回答を変更すると、[データ] タブのリストが自動的に変更されるはずです。ページを更新すると変更されます - Mounted() は機能します。
<strong>updateList()</strong> 関数を作成してみました: </p>
<pre class="brush:php;toolbar:false;">updateList: function() {
アクシオス
.get('/api/recommended-products/?patient_uuid=' '{{patient.uuid}}')
.then(response => (this.data= response.data.results))
}</pre>
<p>それを <strong>save()</strong> 関数に追加します。例: </p>
<pre class="brush:php;toolbar:false;">save: function() {
axios({
メソッド: 'パッチ'、
URL: URL、
データ: this.data
})
.then(関数 (応答) {
this.data = 応答.data;
this.updateList();
}</pre>
<p>問題は、この方法が 2 回目でも機能することです (機能する場合もあれば、機能しない場合もあります)。そこで、<strong>location.reload();</strong> を <strong>save()</strong> に追加しましたが、このアプローチは好きではありません。ページを更新せずにデータリストを更新することはできますか? <strong>updateList()</strong> 関数の何が間違っているのでしょうか? </p>