Skip to content

Instantly share code, notes, and snippets.

@GCheung55
Last active September 17, 2019 20:22
Show Gist options
  • Save GCheung55/34eca382d6d82bf394d30c9ffd591fa2 to your computer and use it in GitHub Desktop.
Save GCheung55/34eca382d6d82bf394d30c9ffd591fa2 to your computer and use it in GitHub Desktop.
Array Proxy Demo
import Ember from 'ember';
import ArrayProxy from '@ember/array/proxy';
import { computed } from '@ember/object';
import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';
import { Promise } from 'rsvp';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
_tempArr: computed(function() {
return [];
}),
promiseProxy: computed(function() {
return ArrayProxy.extend(PromiseProxyMixin).create({
promise: new Promise(function(resolve) {
setTimeout(function() {
resolve(['Fooooood!']);
}, 2000);
})
});
}),
promiseWhat: computed('promiseProxy.[]', function() {
console.log('promiseWhat', this.promiseProxy, this.promiseProxy.isFulfilled, this.promiseProxy.length);
return this.promiseProxy;
}),
resolutionHistory: computed(function() {
setTimeout(() => {
this.get('_tempArr').addObject('Hello!');
}, 1000)
return ArrayProxy.create({
content: this.get('_tempArr')
});
}),
isPending: computed('resolutionHistory.[]', function() {
return this.get('resolutionHistory').length === 0;
})
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
{{#each resolutionHistory as |resolution|}}
<strong>{{resolution}}</strong><br>
{{/each}}
isPending: {{isPending}}<br>
<hr>
{{#each promiseWhat as |p|}}
<strong> Promise {{p}}</strong><br>
{{/each}}
<ul>
<li>promiseProxy length: {{promiseProxy.length}}</li>
<li>promiseProxy isFulfilled: {{promiseProxy.isFulfilled}}</li>
<li>promiseProxy isSettled: {{promiseProxy.isSettled}}</li>
<li>promiseProxy isFulfilled: {{promiseProxy.isRejected}}</li>
<li>promiseProxy isFulfilled: {{promiseProxy.isPending}}</li>
</ul>
{
"version": "0.15.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3"
},
"addons": {
"ember-data": "3.4.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment