【发布时间】:2021-04-24 15:44:07
【问题描述】:
当我从函数分配数据时,我遇到了问题。错误出现在控制台中((承诺中) TypeError: Cannot read property '0' )但我的应用程序上显示的数据
代码如下:
<template>
<div class="row">
<div class="col-lg-12 bg-white" style="height: 100vh; overflow: scroll;">
<div class="wrap-content">
<h5 class="py-3 text-primary">QS</h5>
<div class="hero text-white px-3 py-4 mb-5">
<p class="font-weight-300 font-12">Jumat, 23 April 2021 / 6 Syawal 1438</p>
<h4>{{ jadwal_belum_terlewat[0].time }} WIB</h4>
<p class="font-weight-300 font-14">Waktu shalat berikutnya</p>
<p class="font-weight-300 font-12 mb-0"><i class="fas fa-map-marker-alt"></i> {{ this.address }}</p>
</div>
</div>
</div>
</div>
</template>
<script>
// import moment from 'moment'
import Alert from '../components/Alert'
export default {
name: 'JadwalShalat',
components: {
Alert
},
data() {
return {
error_flag: false,
error_message: '',
lat: '',
long: '',
jadwal_belum_terlewat : null,
jadwal: [
{
name: 'SUBUH',
time: ''
},
{
name: 'DZUHUR',
time: ''
},
{
name: 'ASHAR',
time: ''
},
{
name: 'MAGHRIB',
time: ''
},
{
name: 'ISYA',
time: ''
}
],
address: ''
}
},
methods: {
async getUserCoordinates() {
const check_permissions = await navigator.permissions.query({ name: 'geolocation' });
if(check_permissions.state == 'granted') {
this.error_flag = false;
this.error_message = "";
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(this.showPosition)
this.error_flag = false;
this.error_message = "";
} else {
this.error_flag = true;
this.error_message = "Perangkat anda tidak mendukung GPS";
}
} else {
this.error_flag = true;
this.error_message = "Silahkan aktifkan GPS terlebih dahulu";
}
},
showPosition(position) {
this.lat = position.coords.latitude;
this.long = position.coords.longitude;
this.getDetailShalat();
},
async getDetailShalat() {
const res = await fetch(`https://api.pray.zone/v2/times/today.json?latitude=${this.lat}&longitude=${this.long}`)
if(res.ok) {
const data = await res.json();
this.jadwal[0].time = data.results.datetime[0].times.Fajr;
this.jadwal[1].time = data.results.datetime[0].times.Dhuhr;
this.jadwal[2].time = data.results.datetime[0].times.Asr;
this.jadwal[3].time = data.results.datetime[0].times.Maghrib;
this.jadwal[4].time = data.results.datetime[0].times.Isha;
this.jadwal_belum_terlewat = this.jadwal.filter((data) => this.now < data.time);
}
},
},
created() {
this.getUserCoordinates()
}
}
</script>
我想用 this.jadwal.filter((data) => this.now
希望你能帮帮我,谢谢
【问题讨论】:
-
将
jadwal_belum_terlewat : null更改为jadwal_belum_terlewat : [{time: "-"}],这样模板可能会在api响应之前被解析为“-”。 -
@Wazeed 太好了,谢谢
标签: javascript vue.js asynchronous async-await promise