如何在与Ember动态出现的元素上运行js函数?

时间:2013-12-10 23:45:26

标签: javascript jquery ember.js

我正在开发一个Ember项目,我有一个按钮,可以在DOM中插入一些HTML标签。我想调用一个javascript函数来加载那些新的DOM元素。这是我的代码:

    <script type="text/x-handlebars" id="doc">    
       {{#if isEditing}}
          {{partial 'doc/editbox'}}
       {{/if}}
         ...
    </script>

部分doc / editbox只包含一些html标签。

我已尝试将javascript作为启动插入的单击按钮事件的一部分运行,但js不起作用,因为DOM元素尚不存在。我看到这篇文章: How to Run Some JS on an Element in the Index Template in Ember.js RC2 建议使用Ember.run.next,但是由于View'Doc'最初没有那些额外的DOM元素(直到点击按钮),因此无效。如何让javascript函数在正确的时间运行?

1 个答案:

答案 0 :(得分:1)

在控制器中添加观察

watchEditing: function(){
  if (this.get('isEditing')){
    Ember.run.scheduleOnce('afterRender', function(){
      //do it here
    });
  }
}.observes('isEditing')

另外,您可以使用render代替partial并创建关联的视图,并在该视图的didInsertElement中运行它。