Javascript Ember.js:如何在将新项插入ArrayController后应用jquery插件
所以我有一个ArrayController,它以非常标准的方式呈现: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}} <
<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是我想要的。