teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

修正

2021/04/25 16:22

投稿

tanoken729
tanoken729

スコア1

title CHANGED
File without changes
body CHANGED
@@ -10,6 +10,11 @@
10
10
 
11
11
  ## 環境
12
12
  - @vue/cli 4.5.11
13
+ - "firebase": "^8.3.1",
14
+ - "vee-validate": "^3.4.5",
15
+ - "vue": "^2.5.2",
16
+ - "vue-router": "^3.0.1",
17
+ - "vuex": "^3.6.2"
13
18
 
14
19
  ## ソースコード
15
20
  ```vue

2

修正

2021/04/25 16:22

投稿

tanoken729
tanoken729

スコア1

title CHANGED
File without changes
body CHANGED
@@ -8,8 +8,10 @@
8
8
  コンソールエラー
9
9
  ``Uncaught (in promise) TypeError: Cannot read property 'getters' of undefined``
10
10
 
11
+ ## 環境
12
+ - @vue/cli 4.5.11
11
13
 
12
- コード
14
+ ## ソースコード
13
15
  ```vue
14
16
  <ValidationObserver>
15
17
  <ValidationProvider name="tipping" rules="my_rule" v-slot="{ errors }">
@@ -32,8 +34,90 @@
32
34
  extend('my_rule', myRule);
33
35
  ```
34
36
 
37
+ ## 全体ソースコード
35
- イメージ
38
+ ```vue
39
+ <template>
40
+ <div id="overlay" v-show="showContent2" @click.self="onlyCloseSendModal">
41
+ <div id="main-content">
42
+ <p>あなたの残高:{{ $store.getters.myWallet }}</p>
43
+ <p>送る金額</p>
44
+ <ValidationObserver v-slot="{ invalid }">
45
+ <ValidationProvider name="tipping" rules="my_rule" v-slot="{ errors }">
46
+ <input type="text" class="text" v-model="tippingWallet">
47
+ <p>{{ errors[0] }}</p>
48
+ </ValidationProvider>
49
+ <div id="button-content">
50
+ <p><button @click="closeSendModal" class="modal-button" :disabled="invalid">送信</button></p>
51
+ </div>
52
+ </ValidationObserver>
53
+ </div>
54
+ </div>
55
+ </template>
36
56
 
57
+ <script>
58
+ /* eslint-disable */
59
+ import { ValidationObserver, ValidationProvider, extend, required, numeric, max_value} from '@/VeeValidate/index.js';
60
+
61
+ // 必須
62
+ extend('required', {
63
+ ...required,
64
+ message: '必須です。'
65
+ });
66
+ // 数値
67
+ extend('numeric', {
68
+ ...numeric,
69
+ message: '数値で入力してください。'
70
+ });
71
+
72
+ const myRule = {
73
+ params: ['str'],
74
+ message: '所持金が足りません。',
75
+ validate(value, {str}) {
76
+ return value <= 500;
77
+ }
78
+ };
79
+ extend('my_rule', myRule);
80
+
81
+ export default {
82
+ components: {
83
+ ValidationObserver,
84
+ ValidationProvider,
85
+ },
86
+ data () {
87
+ return {
88
+ showContent2: false,
89
+ tippingWallet: '',
90
+ aaa: this.$store.getters.myWallet
91
+ }
92
+ },
93
+ methods: {
94
+ openSendModal (){
95
+ this.$emit('openSendModal');
96
+ },
97
+ closeSendModal (){
98
+ this.$emit('closeSendModal', this.tippingWallet);
99
+ },
100
+ onlyCloseSendModal (){
101
+ this.$emit('onlyCloseSendModal');
102
+ this.tippingWallet = ''
103
+ },
104
+ },
105
+ computed: {
106
+ users () {
107
+ return this.$store.getters.users
108
+ },
109
+ modalData () {
110
+ return this.$store.getters.modalData
111
+ },
112
+ myWallet () {
113
+ return this.$store.getters.myWallet
114
+ }
115
+ }
116
+ }
117
+ </script>
118
+
119
+ ```
120
+
37
121
  # 参照
38
122
 
39
123
  https://vee-validate.logaretm.com/v3/guide/rules.html#rules

1

修正

2021/04/25 16:20

投稿

tanoken729
tanoken729

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  ## やりたいこと
2
- $store.getters.myWallet(自分っている残高)より多い金額を入力した時、Veevalidateを使用してバリデーション をかけたい
2
+ $store.getters.myWallet(自分のもっている残高)より多い金額を入力した時、Veevalidateを使用してバリデーション をかけたい
3
3
 
4
4
  ## 状況
5
5
  バリデーションの値として max_valueに ``$store.getters.myWallet`` が指定できないということであれば、VeeValidationにはカスタムルールを設定することもできますので、そちらを使う必要がありますね。