我是一名ember初学者,试图实现一个jQuery块来以0.5秒的延迟一个接一个地显示我的对象。Ember JS-在组件完全呈现后应用jQuery
我当前的代码,以显示我的灰烬对象是一样的东西下面
{{#if isBusy}}
<div>Loading..</div>
{{else}}
{{#if areLeads}}
{{#each lead in leads}}
<div>lead.title</div>
{{/each}}
{{else}}
<div>No Leads</div>
{{/unless}}
{{/if}}
现在,正是我想要的是,之后的引线已经能够显示,我的代码应该执行,当isBusy
是在假。
下面是一些我的页面开始加载,一旦试图
_animateLeads: ->
alert()
didInsertElement: ->
Ember.run.scheduleOnce 'afterRender', @, => @_animateLeads()
然而,警报弹出。我没有太多的意识到烬概念和学习相同。
请指导我如何继续,让我知道如果我应该提供其他细节。任何帮助表示赞赏。由于
更新
我结束了枝条下面的代码
_animateLeads: Ember.observer 'leads', ->
if @get('leads')
$('li.leads-list-lead').each (i) ->
$(this).fadeOut(1000).delay(2000*i).fadeIn(2000);
return
_animateOnInsert: (->
Ember.run.scheduleOnce('afterRender', @, @_animateLeads)
).on('didInsertElement')
但只有以下工作时的leads
变化而成。最初,当页面加载时,导致不按预期出现,例如,以动画的方式。以下也可以,但是再一次,只有当leads
改变
_animateLeads: (->
if @get('leads')
$('li.leads-list-lead').each (i) ->
$(this).fadeOut(1000).delay(2000*i).fadeIn(2000);
).observes('leads')
解决方案
我通过混合我在做什么上面为我工作结束了下面的代码。
_animateLeads: (->
Ember.run.scheduleOnce('afterRender', @, @_animateActiveLeads)
).observes('leads')
_animateActiveLeads: (->
if @get('leads') && @get('leadDisplay') == 'active'
$('li.is-online').each (i) ->
$(this).fadeOut(0).delay(1000*i).fadeIn(1850);
)
类似的问题被问及here没来在我前面的搜索。接受的答案为我工作。
对于'afterRender'你是对的,正如你看到的是最初尝试的那样。但是,我改变了一些东西,并且能够使它工作。虽然面临另一个问题。我会在一段时间后发布我的代码 – Aakanksha
你可以看看更新的代码和说明吗?谢谢 – Aakanksha
我后来认为'byRender',你的意思是像'_animateLeads'这样的方法。无论如何,我发现结束了上述解决方案,适合我。感谢您的指导。欣赏它! – Aakanksha