我正在尝试从流星调用中填充我的事件数组,以便它显示在选择列表中。 Meteor函数'get.upcoming'返回一个JSON对象数组,但我认为选择列表是在填充事件数组之前呈现的。
有没有办法重新渲染选择框或仅在填充事件数组后才渲染它?
<template>
<div class="container">
<select v-model='eventId'>
<option v-for='event in events'>{{JSON.stringify(event)}}</option>
</select>
</div>
</template>
<script>
export default {
data() {
return {
eventId: "",
events: [],
}
},
created() {
this.getItems();
},
methods: {
getItems() {
console.log("getting items");
Meteor.call('get.upcoming', function(err, res) {
if (err) {
console.log(err);
} else {
events = res;
console.log(events);
}
})
}
}
}
</script>
<style>
</style>
答案 0 :(得分:0)
在Meteor调用回调函数中使用this.events = res;
将响应保存到events
。
此外,使用箭头函数进行回调,以便它可以通过this
访问Vue实例。
getItems() {
console.log('getting items');
Meteor.call('get.upcoming', (err, res) => {
if (err) {
console.log(err);
} else {
this.events = res;
console.log(this.events);
}
})
}
答案 1 :(得分:0)
data()
方法中的所有已注册变量在网页加载后都可用作模板类变量,其内容可选择双向绑定到组件。 if (!error) this.events = newEvents
<template>
<select v-if="dataLoaded"> </select>
</template>
<script>
return {
data() {
return {
dataLoaded: false
}
}
asyncMethod() { this.dataLoaded = true; }
};
</script>