vue-property-decoratorのPropSyncで、以下のように複数の変数を1つのモデルに格納して、
子コンポーネントから親コンポーネントへ値を渡したいと考えています。
以下のような書き方をすると、実行時にエラーが出力されます。
どのようにすれば親コンポーネントへモデルを渡すことができますでしょうか?
- モデル(InfoModel.ts)
export default class InfoModel { public personNumber: string; public personName: string; public personAge: number; constructor(personNumber: string, personName: string, personAge: number) { this.personNumber = personNumber; this.personName = personName; this.personAge = personAge; } }
- 子コンポーネント(Child.vue)
<template> <div> <v-card> <v-form> <v-card-text> <v-row> <v-col> <v-text-field v-model="personNumber" label="番号" maxlength="3" /> </v-col> </v-row> <v-row> <v-col cols="6"> <v-text-field v-model="personName" label="名前" maxlength="10" /> </v-col> <v-col cols="6"> <v-text-field v-model="personAge" maxlength="3" label="年齢" /> </v-col> </v-row> </v-card-text> </v-form> </v-card> </div> </template> <script lang="ts"> import { Component, Vue, PropSync } from 'vue-property-decorator'; import InfoModel from '../../InfoModel'; @Component export default class Child extends Vue { private personNumber!: string; private personName!: string; private personAge!: number; // TODO 情報を1つのモデルに格納する。 @PropSync('personInfomation', { type: Object, default: null }) private infoModel: InfoModel = new InfoModel( this.personNumber, this.personName, this.personAge ); } </script>
- 親コンポーネント(Parent.vue)
<template> <v-container> <v-card> <Child :person-information.sync="personInformation" /> </v-card> </v-container> </template> <script lang="ts"> import { Component, PropSync, Vue } from 'vue-property-decorator'; import InfoModel from '../../InfoModel'; import Child from '@/components/Child.vue'; @Component({ components: { Child, }, }) export default class Parent extends Vue { private personInformation = new InfoModel('', '', 0); } </script>
- 実行時エラー
[Vue warn]: The computed property "infoModel" is already defined in data.
回答1件
あなたの回答
tips
プレビュー