質問編集履歴

1

自己解決版を追記

2018/12/05 03:15

投稿

yoshiky
yoshiky

スコア105

test CHANGED
File without changes
test CHANGED
@@ -125,3 +125,137 @@
125
125
 
126
126
 
127
127
  ご教示のほど、よろしくお願いいたします。
128
+
129
+
130
+
131
+ ---
132
+
133
+ ※追記
134
+
135
+ **自己解決版**
136
+
137
+
138
+
139
+ ```
140
+
141
+ # ParentComp.vue
142
+
143
+ <template>
144
+
145
+ <div>
146
+
147
+ <child-comp
148
+
149
+ v-for="(item, idx) in items"
150
+
151
+ :key="idx"
152
+
153
+ v-bind:items="items"
154
+
155
+ v-bind:idx="idx" />
156
+
157
+ <p>{{ total }}</p>
158
+
159
+ </div>
160
+
161
+ </template>
162
+
163
+
164
+
165
+ <script>
166
+
167
+ import ChildComp from '@/components/ChildComp'
168
+
169
+ export default {
170
+
171
+ name: 'parent-comp',
172
+
173
+ data () {
174
+
175
+ return {
176
+
177
+ items: ['', '', '', '', ''], // 行追加/削除ボタンをつけるので仮置き
178
+
179
+ total: 0
180
+
181
+ }
182
+
183
+ },
184
+
185
+ updated() {
186
+
187
+ let result = this.items.map(Number).reduce(function(sum, price) {
188
+
189
+ return sum + price
190
+
191
+ })
192
+
193
+ this.total = Math.floor(result * 1.08)
194
+
195
+ },
196
+
197
+ methods: {
198
+
199
+ addRow() {
200
+
201
+ this.items.push('')
202
+
203
+ }
204
+
205
+ },
206
+
207
+ components: {
208
+
209
+ ChildComp
210
+
211
+ }
212
+
213
+ }
214
+
215
+ </script>
216
+
217
+ ```
218
+
219
+
220
+
221
+ ```
222
+
223
+ # ChildComp.vue
224
+
225
+ <template>
226
+
227
+ <div>
228
+
229
+ <input v-model="items[idx]" type="text" class="input"/>
230
+
231
+ <span>{{ priceWithTax(items[idx]) }}</span>
232
+
233
+ </div>
234
+
235
+ </template>
236
+
237
+
238
+
239
+ <script>
240
+
241
+ export default {
242
+
243
+ name: 'child-comp',
244
+
245
+ props: ['items', 'idx'],
246
+
247
+ methods: {
248
+
249
+ priceWithTax(price) {
250
+
251
+ return Math.floor(price * 1.08)
252
+
253
+ }
254
+
255
+ }
256
+
257
+ }
258
+
259
+ </script>
260
+
261
+ ```