gpt4 book ai didi

angular - Ionic 3 值绑定(bind)地理定位

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:36 27 4
gpt4 key购买 nike

ERROR TypeError: Cannot set property 'items' of null

这是结果:

</ion-card>
<button ion-button round outline
(click)="logEvent($startTrackingButton)">Start tracking me</button>
<ion-card>
<ion-item>
<h2>Locations:</h2>
<ion-list no-lines>
<h3 ion-item *ngFor="let item of items" (click)="itemSelected(item)">
{{ item }}
</h3>
</ion-list>
</ion-item>
</ion-card>
</ion-content>

(在 Component.html 中),现在是它的 .ts 文件:

logEvent1(TrackNowButton) {

/*Initializing geolocation*/

// onSuccess Callback
// This method accepts a Position object,
// which contains the
// current GPS coordinates
var onSuccess = function(position) {
this.items = ([{
key: "1", value: {
Latitude: position.coords.latitude,
Longitude: position.coords.longitude
}
}, {
key: "2", value: {
Altitude: position.coords.altitude,
Accuracy: position.coords.accuracy
}
}, {
key: "3", value: {
Altitude_Accuracy: position.coords.altitudeAccuracy,
Heading: position.coords.heading
}
}, {
key: "4", value: {
Speed: position.coords.speed,
Timestamp: position.timestamp
}
}]);
};

// onError Callback receives a PositionError
// object
function onError(error) {
console.log('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
}
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}

itemSelected(item: string) {
console.log("Selected Item", item);
}

我希望这是可读的...我不知道我在数据绑定(bind)方面做错了什么,因为那是我认为错误的地方...我还认为 .ts 文件中的部分有问题,我在其中写道:this.items= (...) 因为我认为该值不能绑定(bind)到 html 或其他东西。我正在开发一个小程序,它经常跟踪运动并使用给定参数记录它们。稍后我想添加 Mapbox 支持,但我需要先解决一些错误。

最佳答案

您收到的错误表明 this 为空。用箭头函数替换分配给 onSuccess 的函数。它将为 this 使用正确的值。

var onSuccess = (position: any) => {
this.items = ([{
key: "1", value: {
Latitude: position.coords.latitude,
Longitude: position.coords.longitude
}
}, {
key: "2", value: {
Altitude: position.coords.altitude,
Accuracy: position.coords.accuracy
}
}, {
key: "3", value: {
Altitude_Accuracy: position.coords.altitudeAccuracy,
Heading: position.coords.heading
}
}, {
key: "4", value: {
Speed: position.coords.speed,
Timestamp: position.timestamp
}
}]);
};

您可以使用 JSON.stringify 将所选项目转换为字符串:

itemSelected(item: any) {
console.dir(item);
let str = JSON.stringify(item);
...
}

另一方面,如果每一项都需要定义为字符串,则可以为数组中的每一项调用JSON.stringify

var onSuccess = (position: any) => {
this.items = ([JSON.stringify({
key: "1", value: {
Latitude: position.coords.latitude,
Longitude: position.coords.longitude
}
}), JSON.stringify({
key: "2", value: {
Altitude: position.coords.altitude,
Accuracy: position.coords.accuracy
}
}), JSON.stringify({
key: "3", value: {
Altitude_Accuracy: position.coords.altitudeAccuracy,
Heading: position.coords.heading
}
}), JSON.stringify({
key: "4", value: {
Speed: position.coords.speed,
Timestamp: position.timestamp
}
})]);
}

关于angular - Ionic 3 值绑定(bind)地理定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47838582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com