1

我有一个使用砖石Ember JS的应用程序我尝试通过选择器搜索 DOM 元素,但它检索null似乎我在模板渲染之前就这样做了。请帮我解决它。

4

2 回答 2

5

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

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

didInsertElement函数将在视图插入 DOM 时被调用,因此初始化额外的库是安全的。

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

例子:

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

希望能帮助到你。

于 2013-07-31T17:59:21.883 回答
1

为您的 Route 和 Template 创建相应的 View,然后覆盖该didInsertElement方法。

于 2013-07-31T17:48:41.920 回答