你如何处理 svelte 中的函数参数?
How do you handle function parameters in svelte?
我正在尝试让地理定位的 html5 规范在 svelte 中工作。我不知道如何让 showPosition 函数参数生效。
提前致谢!
<script>
function getLocation() {
console.log('This code runs when the button is clicked');
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
}
function showPosition(position) {
console.log('this code never runs');
const lng = position.coords.longitude;
const lat = position.coords.latitude;
console.log(`longitude: ${ lng } | latitude: ${ lat }`);
}
</script>
<button on:click="{getLocation}">Try It</button>
你的 JS 中没有任何特定于 Svelte 的内容,如果它在 Svelte 之外工作,它应该在这里工作。
我猜你传递的成功回调没有被调用,因为你没有获得成功,而是一个错误。例如,如果浏览器第一次询问您的域(可能是 localhost:something)时您被拒绝访问您的位置,那么以后的请求将被静默拒绝。你得到了错误。
你也应该有一个错误回调:
const onSuccess = console.log.bind(console, 'success')
const onError = console.error.bind(console, 'error')
const options = {
// ...
}
navigator.geolocation.getCurrentPosition(onSuccess, onError, options)
有关详细信息和可用选项,请参阅 API docs (mdn)。
使用此代码,无论是否使用 Svelte,您都应该在浏览器的控制台中看到一些事情发生。
我正在尝试让地理定位的 html5 规范在 svelte 中工作。我不知道如何让 showPosition 函数参数生效。
提前致谢!
<script>
function getLocation() {
console.log('This code runs when the button is clicked');
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
}
function showPosition(position) {
console.log('this code never runs');
const lng = position.coords.longitude;
const lat = position.coords.latitude;
console.log(`longitude: ${ lng } | latitude: ${ lat }`);
}
</script>
<button on:click="{getLocation}">Try It</button>
你的 JS 中没有任何特定于 Svelte 的内容,如果它在 Svelte 之外工作,它应该在这里工作。
我猜你传递的成功回调没有被调用,因为你没有获得成功,而是一个错误。例如,如果浏览器第一次询问您的域(可能是 localhost:something)时您被拒绝访问您的位置,那么以后的请求将被静默拒绝。你得到了错误。
你也应该有一个错误回调:
const onSuccess = console.log.bind(console, 'success')
const onError = console.error.bind(console, 'error')
const options = {
// ...
}
navigator.geolocation.getCurrentPosition(onSuccess, onError, options)
有关详细信息和可用选项,请参阅 API docs (mdn)。
使用此代码,无论是否使用 Svelte,您都应该在浏览器的控制台中看到一些事情发生。