Javascript Ember.js:如何在将新项插入ArrayController后应用jquery插件

Javascript Ember.js:如何在将新项插入ArrayController后应用jquery插件,javascript,ember.js,Javascript,Ember.js,所以我有一个ArrayController,它以非常标准的方式呈现: <ul> {{#each controller}} <li>{{ user.name }} : {{message}} <abbr class="timeago" title="{{unbound datetimeFormatted}}">{{unbound datetimeFormatted}}</abbr></li> {{/each}} <

所以我有一个ArrayController,它以非常标准的方式呈现:

<ul>
  {{#each controller}}
     <li>{{ user.name }} : {{message}} <abbr class="timeago" title="{{unbound datetimeFormatted}}">{{unbound datetimeFormatted}}</abbr></li>
  {{/each}}
</ul>
    {{{#每个控制器}}
  • {{user.name}}:{{message}{{unbound datetimeFormatted}}
  • {{/每个}}
我想要的是在插入新项后应用jQuery.timeAgo插件,但要做到这一点,我应该以某种方式获得对插入元素的引用

我尝试了
didInsertElement
方法,但它只在呈现整个视图时触发,我需要将此插件应用于插入DOM的每个新项

所以,我的问题真的可以这样表述——有没有办法获得对新插入的DOM元素的引用,或者在将新项添加到ArrayController并附加到DOM后触发的任何回调?

我看到了两种可能性:

1-在阵列上设置观察者,每次插入元素时都会触发该观察者。但是您不会自动获得对新元素的引用

yourObserver : function(){
    ...
}.observes("content.@each")
2-将列表项包装在自己的视图中(例如:App.ListItemView),并使用didInsertElement事件:

{{#each}}
  {{#view App.ListItemView}}
    <li>... </li>
  {{/view}}
{{/each}}

App.ListItemView = Ember.View.extend({
  didInsertElement : function(){
    this.$().timeago();
  }
}
{{#each}
{{{#view App.ListItemView}
  • {{/view} {{/每个}} App.ListItemView=Ember.View.extend({ didInsertElement:函数(){ 这个。$().timeago(); } }
  • 我建议使用
    {{each}
    助手的无块形式来指定每个元素要使用的视图类

    <ul>{{each controller itemViewClass="App.AnItemView"}}</ul>
    
      {{each controller itemViewClass=“App.AnItemView”}
    然后定义App.AnItemView,如下所示:

    App.AnItemView = Ember.View.extend({
      template: Ember.Handlebars.compile('{{ user.name }} : {{message}} <abbr class="timeago" title="{{unbound datetimeFormatted}}">{{unbound datetimeFormatted}}</abbr>'),
      didInsertElement : function(){
        this.$().timeago();
      }
    });
    
    App.AnItemView=Ember.View.extend({
    模板:Ember.handlebar.compile({{user.name}}:{{{message}}{{unbound datetimeFormatted}}}),
    didInsertElement:函数(){
    这个。$().timeago();
    }
    });
    
    谢谢,它成功了,只是对它的性能效果感兴趣,比如说,渲染大约100个或更多的项目。谢谢,#2是我想要的。