如何在EmberJS上呈现模板后捕获事件?

时间:2013-07-31 17:44:50

标签: ember.js

我有一个使用masonryEmber JS的应用程序我试图通过选择器搜索DOM元素,但它检索null我似乎比模板渲染时更早。请帮我解决。

2 个答案:

答案 0 :(得分:5)

@GJK答案是正确的,我只是想提供一个有效的例子:http://jsbin.com/enijad/3/edit

App.IndexView = Ember.View.extend({
  didInsertElement: function() {
    var $container = $('#container');
    $container.masonry({
      columnWidth: 150,
      itemSelector: '.item'
    });
  }
});

当视图插入DOM时,将调用didInsertElement函数,因此可以安全地初始化其他库。

另外值得一提的是,如果在从DOM中删除视图后需要进行一些清理,则可以在didInsertElement的对应钩子willDestroyElement中执行此操作。

示例:

App.IndexView = Ember.View.extend({
  didInsertElement: function() {
    // do initialization here
  },
  willDestroyElement: function() {
    // and here you can remove stuff safely
  }
});

希望它有所帮助。

答案 1 :(得分:1)

为路线和模板创建相应的视图,然后覆盖didInsertElement方法。