0
私は2つのフォームコンポーネントを持っており、共通のJSバリデータを持っています。JS内からのVue.js非同期アップデート
import { validateInput } from './validateInput.js'
export default {
data() {
return {
email: '[email protected]',
validEmail: false
}
},
methods: {
validateInput
},
watch: {
'email': function (val) {
this.validEmail = validateInput('email', val)
//^makes async request
}
}
}
バリデータはjQuery.ajax
使用しています - サーバへの非同期HTTPリクエストを。問題は、validateInput()
は非同期であるため、サーバーからの応答が得られる前に返されます(this.validEmail
は未定義です) このJSインポート関数の非同期要求が完了した後、Vueインスタンス(this.validEmail
)を更新するにはどうすればよいですか?
簡単に言うと、validateInput
の内部からVueインスタンスに非同期でアクセスするにはどうすればいいですか?
私は更新されません、引数としてVueのインスタンスを渡して試してみた:
validateInput('email', val, this)
----
// validateInput.js
email() {
$.ajax({
...
success(response) {
vueInstance.validEmail = response // doesn't work
}
})
vueInstance.validEmail = false
// ^^^^ this works
}
また、彼は 'Vue.set(vueInstance、 'validEmail'、応答)を使用することができます;' – GONG