我如何从谷歌API抓取数据的自动完成领域在余烬
How do I grab data from a Google API for an autocomplete field in Ember
我的最终目标是在网站的主页上有一个文本字段,用于监听输入,并在每次击键时从Google的Places API获取数据,并将列表发布到主页。我目前正在尝试使用计算属性,但似乎遇到了绑定不等待API请求返回的问题。
我一直在阅读承诺,但我不确定如何将它们纳入我的控制器。
这是我当前的尝试:
App.IndexController = Ember.Controller.extend
service: new google.maps.places.AutocompleteService()
searchText: ''
searchResults: (->
# service = new google.maps.places.AutocompleteService()
@get('service').getPlacePredictions({input: @get('searchText')}, (predictions, status)->
console.log(predictions)
)
).property('searchText')
控制台正确地记录结果,但是searchResults属性没有更新。
我的问题是如何在API请求成功后获得绑定更新,这是组织此逻辑的最佳方式吗?
我不确定Ember Data是否接受承诺作为属性的值,但您可以通过在RSVP承诺中包装google.maps.places.AutocompleteService
响应来尝试测试。
这是另一个应该有效的解决方案。特别注意脂肪箭头和@set
searchResults: (->
@get('service').getPlacePredictions({input: @get('searchText')}, (predictions, status)=>
@set('searchResults', predictions)
)
).property('searchText')
根据Pooyan的提示,这是我最终的选择:
App.IndexController = Ember.Controller.extend
service: new google.maps.places.AutocompleteService()
searchText: ''
results: null
searchTextChanged: (->
if @get('searchText').length
@get('service').getPlacePredictions({input: @get('searchText')}, (predictions, status) =>
console.log("update map here...")
@set('results', predictions)
)
else
@set('results', null)
).observes('searchText')
基本上,我使用了一个观察者来监视我的文本字段。当文本字段发生变化时,我们调用Google的服务来获取结果。然后将这些结果设置为results属性。
相关文章:
- 谷歌地图固定位置覆盖
- 不显示带有本地json文件数据的谷歌地图脚本
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 谷歌地图标记不会显示
- 无法在JS中显示谷歌地图
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 需要帮助谷歌地图方向面板在FancyBox中显示
- 在谷歌地图上获取事件的x,y坐标
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 模拟谷歌地图中的点击
- 谷歌文档表面引擎
- 如何知道哪个标记被谷歌地图点击了
- 谷歌地图JS API+JSON-多个标记没有显示
- 如何在谷歌字体加载时显示加载图像
- 缓存谷歌地图数据
- 谷歌图表-如何更改整个表的css属性
- 我如何从谷歌API抓取数据的自动完成领域在余烬