我是angularJs / coffeescript的新手,正在尝试将其与Google地图集成。
目的是在使用getPlace()自动完成之后获取place_id,并将其传递给服务方法,以将其存储在安全的地方,以便以后保存使用。
这是代码
咖啡代码
class SomeController
constructor: (@$scope, @$log, @$location, @SomeService) ->
@listing = {}
getPlace: (place) ->
place = @getPlace()
alert(place.place_id)
return place
doSomethingMore: () ->
@variable.whereGeo = @getPlace().place_id
alert(@listing.whereGeo)
@SomeService.someFunction(@listing) //save the place id somewhere
controllersModule.controller('SomeController', SomeController)
的HTML
<div ng-controller="SomeController as sc">
<div class="col-sm-3">
<input places-auto-complete type="text" class="form-control" name="where" id="where" placeholder=""
ng-model="sc.search.where" on-place-changed="sc.getPlace(place)">
</div>
<div ng-show= "sc.place.length">
<p>Ideally something should Appear here after autocomplete </p>
place_id = {{ sc.place }} <br/>
</div>
<div class="col-sm-offset-4 col-sm-2 col-xs-1 text-right">
<button ng-click="sc.doSomethingMore()" class="btn btn-success btn-lg" id="btn_create">Submit</button>
</div>
</div>
现在使用的模块是ngMap。这是链接
angular-google-maps
现在让我添加详细信息和问题。
自动完成功能正常
getPlace函数被调用
警报将按预期与place_id一起引发。但是,我不
将数据返回到sc.place
按提交时,我收到错误this.getPlace是
未定义。
我尝试过的东西。我在getPlace中使用了粗体箭头=>并得到了this.getPlace是未定义的错误,调用getPlace时也不会引发警报。
尝试查找here和here并完成了解决方案,但没有使它起作用。
另外,this对于了解场景很有用,但无济于事
对此,我们将给予任何帮助。提前致谢。
最佳答案
好的,所以我做错了。经过一些研究发现了这一点。我把范围弄错了。最后解释。
咖啡脚本
class SomeController
constructor: (@$scope, @$log, @$location, @SomeService) ->
@listing = {}
@place
autocomplete_options = {
types: ['geocode']
}
autocomplete = new google.maps.places.Autocomplete(document.getElementById('where'), autocomplete_options)
google.maps.event.addListener autocomplete, 'place_changed', =>
place = autocomplete.getPlace()
console.log(place.place_id)
@$scope.$apply =>
@$scope.place = place.place_id
doSomethingMore: () ->
@liating.whereGeo = @$scope.place // now place id is available in scope
alert(@listing.whereGeo)
@SomeService.someFunction(@listing) //save the place id somewhere
controllersModule.controller('SomeController', SomeController)
的HTML
<div ng-controller="SomeController as sc">
<div class="col-sm-3">
<input type="text" class="form-control" name="where" id="where" placeholder=""
ng-model="sc.search.where">
</div>
<div class="col-sm-offset-4 col-sm-2 col-xs-1 text-right">
<button ng-click="sc.doSomethingMore()" class="btn btn-success btn-lg" id="btn_create">Submit</button>
</div>
</div>
说明
对于必须实现的目标,必须将place_id分配给
全局变量,然后在整个范围内可用。
必须记住=>和->之间的区别。我找到了一些很好的文档here
最后,this答案很有帮助
关于javascript - 使用coffeescript自动完成放置后无法从getPlace获得值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32883377/