【发布时间】:2013-06-12 21:01:07
【问题描述】:
我正在尝试为 Google 地图创建 Ember 视图,并以按需方式加载脚本,即异步加载 API。
我在视图中有两个函数,一个用于加载 Google Maps API,另一个用于初始化地图。但是由于谷歌要求我通过需要API的链接调用回调函数。但是在 Ember.JS 中,我无法得到正确的结果。我得到的只是一条错误消息,指出在尝试初始化地图时对象“google”未定义。
这里是 Ember 视图代码。
App.MapsView = Ember.View.extend({
templateName: 'maps',
map: null,
didInsertElement: function() {
this._super();
this.loadGoogleMapsScript();
},
initiateMaps:function(){
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(this.$().get(0), mapOptions);
this.set('map',map);
},
loadGoogleMapsScript: function(){
var map_callback = this.initiateMaps();
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=map_callback';
document.body.appendChild(script);
},
});
任何想法如何解决这个回调问题?而且,初始化地图的最佳方式是什么?它应该在模板中还是来自 JS?
提前致谢。
【问题讨论】:
-
已经解决了问题,在此做笔记,以防有人遇到同样的问题。应声明回调函数并将其绑定到窗口对象。请参见下面的代码: window.map_callback = function(){ self.initialize(); } 它有效...
标签: javascript google-maps callback ember.js