Skip to content

Instantly share code, notes, and snippets.

@indirect
Last active August 27, 2015 21:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save indirect/c877a0d3bff9b3301ffc to your computer and use it in GitHub Desktop.
Save indirect/c877a0d3bff9b3301ffc to your computer and use it in GitHub Desktop.
intersection-with-promises
import Ember from 'ember';
export default Ember.Controller.extend({
appName:'Ember Twiddle'
});
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
var section = this.store.createRecord('section');
var items = [];
for (var i = 0; i < 10; i++) {
items.push(this.store.createRecord('item'));
}
for (i = 4; i < 10; i+=2) {
section.get("selected").pushObject(items[i]);
}
section.set("items", DS.PromiseArray.create({
promise: new Ember.RSVP.Promise(function(resolve, reject) {
setTimeout(function(){ resolve(items); }, 1500);
})
}));
return section;
}
});
<h1>Welcome to {{appName}}</h1>
<br>
Section:
{{model.items}}
<br><br>
Items:<br>
{{#each model.items as |item|}}
{{item}}<br>
{{/each}}
<br><br>
Selected:<br>
{{#each model.selected as |item|}}
{{item}}<br>
{{/each}}
<br><br>
Ember.computed.intersect(selected, items):<br>
{{#each model.selectedItems as |item|}}
{{item}}<br>
{{/each}}
<br>
<br>
Manual intersection with toArray():<br>
{{#each model.selectedItemsForcedArrays as |item|}}
{{item}}<br>
{{/each}}
<br>
<br>
import DS from 'ember-data';
export default DS.Model.extend({
});
import DS from 'ember-data';
export default DS.Model.extend({
items: [],
selected: [],
selectedItems: Ember.computed.intersect('selected', 'items'),
selectedItemsForcedArrays: Ember.computed("items.[]", "selected.[]", function () {
return _.intersection(this.get("items").toArray(), this.get("selected").toArray());
})
});
{
"version": "0.4.9",
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.0.1/ember.js",
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.0.0/ember-data.js",
"ember-template-compiler": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.0.1/ember-template-compiler.js",
"lodash": "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment