私は、propsを渡そうとしているPhoneCard.vueコンポーネントを持っています。Vue JSでv-forを使用してコンポーネントの小道具を設定する
<template>
<div class='phone-number-card'>
<div class='number-card-header'>
<h4 class="number-card-header-text">{{ cardData.phone_number }}</h4>
<span class="number-card-subheader">
{{ cardData.username }}
</span>
</div>
</div>
</template>
<script>
export default {
props: ['userData'],
components: {
},
data() {
return {
cardData: {}
}
},
methods: {
setCardData() {
this.cardData = this.userData;
console.log(this.cardData);
}
},
watch: {
userData() {
this.setCardData();
}
}
}
コンポーネントはuserDataのプロパティを受け取り、コンポーネントのcardDataプロパティに設定されます。
私は別のVue.jsコンポーネントをページとして使用しています。このページでは、数値とユーザーのリストを取得するためにAPIへのAJAX呼び出しを行っています。
import PhoneCard from './../../global/PhoneCard.vue';
export default {
components: {
'phone-card': PhoneCard
},
data() {
return {
phoneNumbers: [],
}
},
methods: {
fetchActiveNumbers() {
console.log('fetch active num');
axios.get('/api').then(res => {
this.phoneNumbers = res.data;
}).catch(err => {
console.log(err.response.data);
})
}
},
mounted() {
this.fetchActiveNumbers();
}
}
次に、ajaxコールからの応答データをphoneNumbersプロパティと同じに設定しました。
これで問題が来た後、私はそうのような、のPhoneNumberアレイ内の各番号を反復処理し、カードのコンポーネントに至るまで反復されている現在の数の値をバインドしよう:
<phone-card v-for="number in phoneNumbers" :user-data="number"></phone-card>
しかし、このリードプロパティーのユーザー名などの開発ツールのエラーは定義されていません。エラーレンダリングコンポーネントは、未定義のプロパティーの分割を読み取ることができません。
私はこれを行うために他の方法を試しましたが、それらはすべて同じエラーを引き起こすようです。 vue-forループの現在の反復オブジェクトにコンポーネントの小道具を適切にバインドする方法に関するアイデア?
私はあなたの答えを見る前に1日失ってしまった。ベルン、あなたはこの行動についていくつか説明していますか? – Taras