【发布时间】:2017-09-26 13:19:30
【问题描述】:
我正在尝试访问一个数组,它是传递给组件的道具(事件)的一部分,但是在 created() 或mounted() 中,事件道具的数组部分(其余部分很好)作为不明确的。
如下所示,当我检查 vue chrome 插件中的 props 时,registration_fields 就在那里。
我可以在 event 属性中添加一个观察者,并且可以通过这种方式访问registration_fields,但这似乎很尴尬,必须这样做才能访问已经传入的数据。
这是来自 Chrome vue 检查器:
event:Object
address1_field:"Some Address 1"
address2_field:"Some Address 2"
approved:true
registration_fields:Array[1]
这是我的 vue 文件的一部分:
export default {
props: ['event'],
data() {
return {
regFields: []
}
},
created() {
this.regFields = this.event.registration_fields // Undefined here!
},
watch: {
event() {
this.regFields = this.event.registration_fields //Can access it here
});
}
}
}
我正在使用 Vue 2.4.4
这是组件的调用方式:
<template>
<tickets v-if="event" :event="event"></tickets>
</template>
<script>
import tickets from './main_booking/tickets.vue'
export default {
created() {
var self = this;
this.$http.get('events/123').then(response => {
self.event = response.data
}).catch(e => {
alert('Error here!');
})
},
data: function () {
return {event: {}}
},
components: {
tickets: tickets
}
}
</script>
谢谢
【问题讨论】:
-
这是 vue 开发工具中的一个问题,顺便说一句,为什么要将 prop 分配给本地数据变量。您可以直接使用从道具传递的事件
-
你是如何将 prop 传递给这个组件的?
-
event是异步加载(来自 ajax,...)吗? -
我只是以作业为例。道具加载后,我需要计算registration_fields。
-
事件正在从 ajax 加载,但我将此组件包装在 v-if="event" 中,并且事件的其他属性通过,而不是数组中的属性。