私は次のことをしようとしています:
次のように Vuex ストアからトークンを渡したいと思います。
<template>
...
<div class="col-md-12">
<label for="email" class="label-input">E-mail address</label>
<input v-validate="validations.user.email" v-model="data.user.email" id="email" class="form-control" type="email" name="email" placeholder="Enter e-mail" />
<div v-show="errors.has('email')" id="email-error" class="msg-error text-danger">{{ errors.first('email') }}</div>
</div>
...
</template>
<script>
...
const isUnique = (value) => {
debugger;
return axios.post('/api/v1/users/email_validations', { email: value, token: this.$store.state.auth.JWT }).then((response) => {
// Notice that we return an object containing both a valid property and a data property.
return {
valid: response.data.valid,
data: {
message: response.data.message
}
};
});
};
// The messages getter may also accept a third parameter that includes the data we returned earlier.
Validator.extend('unique_email', {
validate: isUnique,
getMessage: (field, params, data) => {
return data.message;
}
});
...
export default {
...
}
</script>
API にリクエストを送信するカスタム検証を作成したいと考えています。ただし、「export default」セクションの外にある this.$store にはアクセスできません。未定になりました。
次に、このコードをファイルに抽出し、それを必要とするコンポーネントにインポートしたいと思います。どうすればそれができますか?
私は Vue.js と Vee の検証が初めてなので、簡単な質問であれば申し訳ありません。
お時間とご関心をお寄せいただきありがとうございます。