你如何处理 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,您都应该在浏览器的控制台中看到一些事情发生。