我的js文件中有以下代码
$(document).ready ->
mapOptions = null
map = null
set_user_location = (position) ->
mapOptions =
center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude)
zoom: 14
console.log mapOptions
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions)
当我在控制台中查找时,mapOptions变量的值为null。 我错过了一些明显的东西吗?请帮忙。
答案 0 :(得分:1)
如果您希望map
是全局的,那么您必须手动将其附加到window
(假设您在浏览器中):
window.map = null
$(document).ready ->
# use `window.map` in here...
或者像这样:
@map = null
$(document).ready ->
#...
你必须非常小心你如何引用map
或者CoffeeScript会认为你想要一个局部变量;例如,这不会做你想象的那样:
@map = null
$(document).ready ->
map = something
这会在回调函数中生成一个本地map
变量,因此不会触及全局map
。
如果您想要全局,那么我建议您设置一个全局特定于应用程序的命名空间:
# Somewhere before anything else happens...
@your_app_name = { }
然后将任何全局变为命名空间中的属性:
$(document).ready ->
your_app_name.map = null
#...
现在你总是必须包含完整的命名空间(这有助于避免命名冲突),你不必太担心CoffeeScript会在你想要局部变量和全局变量时感到困惑。