我想多谷歌的地方自動完成場在同一個頁面整合,我只是想不通,爲什麼這個僞代碼工作:CoffeeScript的環比谷歌的地方自動完成
$ ->
options = types: ["(cities)"]
insts = []
elements = document.getElementsByClassName('autocomplete_city')
insts[0] = new google.maps.places.Autocomplete(elements[0], options)
google.maps.event.addListener insts[0], "place_changed", ->
place = this.getPlace()
datas = place.geometry.location.lat()+"::"+place.geometry.location.lng()
$(elements[0]).next('input.autocomplete_city_id').val(datas)
insts[1] = new google.maps.places.Autocomplete(elements[1], options)
google.maps.event.addListener insts[1], "place_changed", ->
place = this.getPlace()
datas = place.geometry.location.lat()+"::"+place.geometry.location.lng()
$(elements[1]).next('input.autocomplete_city_id').val(datas)
雖然這個循環版本不工作:
$ ->
options = types: ["(cities)"]
insts = []
elements = document.getElementsByClassName('autocomplete_city')
i = 0
for element in elements
insts[i] = new google.maps.places.Autocomplete(element, options)
google.maps.event.addListener insts[i], "place_changed", ->
place = this.getPlace()
datas = place.geometry.location.lat()+"::"+place.geometry.location.lng()
$(element).next('input.autocomplete_city_id').val(datas)
i += 1
在這種情況下,只有最後的「autocomplete_city_id」與自動完成DATAS填滿,即使你在第一個自動完成輸入(=「元」鍵入reciever變量總是陣列中的最後一個)
不是那兩個片段完全相同還是我缺少一些嚴重的Javascript OOP原則?這是一個Coffeescript陷阱嗎?
是的,這工作,謝謝:-)。儘管如此,Franck的下一個回答指出瞭解決這個問題的「cooffeescript方式」。 – gbarillot