【发布时间】:2014-07-30 06:17:49
【问题描述】:
我是 Ember 新手,我想向 {{#each}} 块中的元素添加一些查询 DOM 操作代码。于是我google了一下,从this guide找到了解决方案:
views/products/index.js
import Spinner from 'appkit/utils/someJqueryCode';
Ember.View.reopen({
didInsertElement : function(){
this._super();
Ember.run.scheduleOnce('afterRender', this, this.afterRenderEvent);
},
afterRenderEvent : function(){
// implement this hook in your own subclasses and run your jQuery logic there
}
});
export default Ember.View.extend({
afterRenderEvent: function() {
Spinner();
}
});
模板/产品/index.hbs
<div class='panel panel-default products'>
<div class='panel-heading'>
<h2 class='panel-title'>Our Prodcuts</h2>
</div>
<div class='panel-body'>
<ul class='row'>
{{#each}}
<li class='col-md-4'>
<div class='thumbnail'>
<img {{bind-attr src=url alt=alt}} />
</div>
<div class='caption'>
<h3 class='name-me'>{{name}}</h3>
<p>{{description}}</p>
<div class='row no-gutter'>
<div class='col-xs-3'>
<button class='btn btn-primary'>Buy</button>
</div>
</div>
</div>
</li>
{{/each}}
</li>
</div>
</div>
但我似乎在触发afterRenderEvent() 之后,{{#each}} 块中的所有元素还没有被渲染到 DOM,因此,jQuery 代码返回 undefined
正确的做法是什么?
【问题讨论】:
-
你的模板是什么样的?
-
@JordyLangen 我已经更新了视图和模板的代码
标签: ember.js