ember install ember-deferred-content
{{! This assumes that post has an async relationship called comments}}
{{#deferred-content post.comments as |d|}}
{{#d.settled}}
<h2>Comments</h2>
{{/d.settled}}
{{#d.pending}}
<img src="https://github.com/danmcclain/ember-deferred-content/raw/master/spinner.gif">
{{/d.pending}}
{{#d.fulfilled as |comments|}}
<ul>
{{#each comments as |comment|}}
<li>{{comment.author}} said: {{comment.body}}
{{/each}}
</ul>
{{/d.fulfilled}}
{{#d.rejected as |reason|}}
Could not load comments: {{reason}}
{{/d.rejected}}
{{/deferred-content}}
{{! or using ifs}}
{{#deferred-content promise=post.comments as |d|}}
{{#if d.isSettled}}
<h2>Comments</h2>
{{/if}}
{{#if d.isPending}}
<img src="https://github.com/danmcclain/ember-deferred-content/raw/master/spinner.gif">
{{/if}}
{{#if d.isFulfilled}}
<ul>
{{#each d.content as |comment|}}
<li>{{comment.author}} said: {{comment.body}}
{{/each}}
</ul>
{{/if}}
{{#if d.isRejected}}
Could not load comments: {{d.content}}
{{/if}}
{{/deferred-content}}
ember-deferred-content
takes the promise you need to resolve to show
your content, and yields 4 subcomponents that you can use to show
content during the different states of your promise
d.settled
: displays the content when the promise is resolved or
rejectedd.pending
: displays the content before the promise is resolved or
rejectedd.fulfilled
: displays the content only when the promise is
resolved; yields the result of the promised.rejected
: displays the content only when the promise is rejected;
yields the result of the promiseIt also sets a series of flags:
d.isSettled
: true if the promise is resolved or rejectedd.isPending
: true until the promise is resolved or rejectedd.isFulfilled
: true if the promise is resolvedd.isRejected
: true if the promise is rejectedd.content
: the return value of the resolved/rejected stateThis addon will work on Ember versions 2.3.x
and up only, due to use
of contextual
components
and the (hash
helper.
git clone
this repositorynpm install
bower install
npm test
(Runs ember try:testall
to test your addon against multiple Ember versions)ember test
ember test --server