[英]How can I have a method in an Object return an object with a dynamic value?
在我的Ember應用程序中,我正在嘗試為Google Maps服務創建包裝。 為了設置地圖的參數,我必須創建一個包含所有參數的對象。 我正在嘗試在mapOptions屬性中執行此操作。 理想情況下,我想在對象內部使用小的輔助方法來計算Google Maps選項對象的值,但是當我嘗試設置對象的center屬性時卻遇到“未定義不是函數”錯誤在我的MapBackgroundGenerator對象中創建對象。 我假設它是一個范圍問題,但是我不確定如何在對象創建方法中訪問我的幫助器方法。
App.MapBackgroundGenerator = Ember.Object.extend
placesService: null
placeId: null
mapContainer: null
setMapLocationFrom: (placeId) ->
console.log(placeId)
@get('placesService').getDetails(placeId: placeId, (place, status) =>
console.log(place)
# @set('placeLocation', place.geometry.location)
return place.geometry.location
)
placeLocation: 1111
# ).observes('placeId')
mapOptions: # ()->
# console.log(@get('placeLocation'))
# return {
zoom: 8
center: @get('placeLocation')
# }
# mapHeight: null
# mapWidth: null
map: null
init: ()->
console.log('init')
@._super
@set('mapContainer', @get('mapContainer')[0])
@set('placesService',
new google.maps.places.PlacesService(@get('mapContainer')))
console.log(@get('mapOptions'))
@set('map',
new google.maps.Map(@get('mapContainer'), @get('mapOptions')))
@get
必須在實例的上下文中執行。 在這里,您正在窗口的上下文中執行它。
您可以將mapOptions更改為計算屬性:
mapOptions: function(){
return {
zoom: 8
center: this.get('placeLocation')
}
}.property('placeLocation')
或者,如果僅希望將其用作方法,則不會使用getter
,而只需調用func
mapOptions: function(){
return {
zoom: 8
center: this.get('placeLocation')
}
}
@set('map', new google.maps.Map(@get('mapContainer'), @mapOptions()))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.