次のことを行うmounted
メソッドしか持たない単純なコンポーネントがあるとします。
this.myValue = 'a value'
$(this.$el).parent('form').submit()
私のコンポーネントhtmlは次のようになります:
<form action="http://…">
<input type="text" :value="myValue">
</form>
ご覧のとおり、私はjQueryを使用してフォームを送信しています。値の割り当てとフォームの送信の両方が同じ関数で行われる場合、__空のデータが送信されます__。 遅延なしでタイムアウトを使用することでこれを回避できますが、もちろんそれは理想的ではありません。
setTimeout(() => {
$(this.$el).parent('form').submit()
})
これは、マウントされたメソッドにない場合にも発生しますが、たとえばon blur out
であるため、ページの読み込みや遅延とは関係ありません。 :value
とv-model
についても同じことが言えます。
VueやJSの内部についてはよくわかりませんが、まだ値を割り当てられていないためだと思います。 タイムアウトを使用すると、送信は次のティックで発生します。
問題を解決する方法はないと思いました。
この状況では、ajaxのparamの値を手動で書き込みます。
この問題はそれ以前に投稿されましたか? 何も見つかりませんでした。
ええと、私の場合は、ページの更新を含めてフォームを自動的に送信したいだけで、Ajax経由で送信したくない(そして送信できない)のです。 解決策がない場合は、ドキュメントに記載しておくとよいでしょう。
vm。$ nextTickを使用する
this.myValue = 'a value'
this.$nextTick(function () {
$(this.$el).parent('form').submit()
})
最も参考になるコメント
vm。$ nextTickを使用する