除了点击之外的Ember事件

时间:2012-02-11 04:10:01

标签: ember.js

修改:在这里找到答案: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>

但这也没有做任何事。

什么是正确的事件名称?

由于

1 个答案:

答案 0 :(得分:4)

在视图上覆盖didInsertElement()(可能在里面调用this._super(),调用刚刚被遮蔽的函数。)

您还可以收听对DOM的更改,例如DOMNodeInsertedDOMSubtreeModified,但这包括任何更改