修改:在这里找到答案:Using Ember.js, how do I run some JS after a view is rendered?
在mapView中
didInsertElement: function() {
this._super();
map_initialize();
},
***********原帖****************
我对js很新,我正在尝试使用ember.js。
我正在尝试使用google maps api来显示地图。通常你应该用
初始化地图<body onload="map_initialize()">
但是因为接收地图的map div是ember视图模板的一部分,所以在调用函数时它还不在DOM中。
console.log(document.getElementById("map_canvas"));
返回false。
然后我将初始化函数放在我的地图视图中,以便可以从绑定到地图div本身的事件中调用它。这样就无法在加载div之前调用map_initialize()。
<script type="text/x-handlebars" data-template-name="map" >
<div id="map_canvas" style="width:100%; height:100%" {{action "map_initialize" on="click"}}></div>
</script>
这完美无缺。当页面加载时,我可以点击地图div,然后加载地图。
我的问题是,如何在将div添加到DOM后自动调用此事件
<div id="map_canvas" style="width:100%; height:100%" onload="initialize()"></div>
无效(未调用map_initialize()函数)。
我也试图通过ember with
来做到这一点<div id="map_canvas" style="width:100%; height:100%" {{action "map_initialize" on="load"}}></div>
但这也没有做任何事。
什么是正确的事件名称?
由于
答案 0 :(得分:4)
在视图上覆盖didInsertElement()
(可能在里面调用this._super()
,调用刚刚被遮蔽的函数。)
您还可以收听对DOM的更改,例如DOMNodeInserted
或DOMSubtreeModified
,但这包括任何更改