Skip to content

Instantly share code, notes, and snippets.

@alexspeller
Forked from mvuckovic/controllers.application.js
Last active January 6, 2017 20:38
Show Gist options
  • Save alexspeller/3e9427a6e6c8e72c7c576c9e2534624d to your computer and use it in GitHub Desktop.
Save alexspeller/3e9427a6e6c8e72c7c576c9e2534624d to your computer and use it in GitHub Desktop.
intersect bug
import Ember from 'ember';
let objA = {name: 'pojoA'};
let objB = {name: 'pojoB'};
let objC = {name: 'pojoC'};
let objD = {name: 'pojoD'};
let objE = {name: 'pojoE'};
let notBrokenIntersect = (keyOne, keyTwo) => Ember.computed(`${keyOne}.[]`, `${keyTwo}.[]`, function() {
let arrayTwo = this.get(keyTwo);
return this.get(keyOne).reduce((memo, item) => {
if (arrayTwo.includes(item)) {
memo.push(item);
}
return memo;
}, []);
});
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
someActors: Ember.computed('model', function() {
return this.get('model').slice(0,2);
}),
intersectActors: notBrokenIntersect('model', 'someActors'),
diffActors: Ember.computed.setDiff('model', 'someActors'),
pojoArr1: [objA, objB, objC, objD, objE],
pojoArr2: [objA, objB],
intersectPojos: Ember.computed.intersect('pojoArr1', 'pojoArr2'),
diffPojos: Ember.computed.setDiff('pojoArr1', 'pojoArr2')
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
name: attr('string')
});
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel() {
this.store.push({
data: [
// an array of records
{
id: '1',
type: 'actor',
attributes: {
name: 'actor1'
}
},
{
id: '2',
type: 'actor',
attributes: {
name: 'actor2',
}
},
{
id: '3',
type: 'actor',
attributes: {
name: 'actor3',
}
},
{
id: '4',
type: 'actor',
attributes: {
name: 'actor4',
}
},
{
id: '5',
type: 'actor',
attributes: {
name: 'actor5',
}
},
]
});
},
model() {
return this.store.peekAll('actor');
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
All Actors:
{{#each model as |actor|}}
{{actor.name}}
{{/each}}
<br>
Some Actors:
{{#each someActors as |actor|}}
{{actor.name}}
{{/each}}
<br>
Intersect Actors:
{{#each intersectActors as |actor|}}
{{actor.name}}
{{/each}}
<br>
Diff Actors:
{{#each diffActors as |actor|}}
{{actor.name}}
{{/each}}
<br><br><br>
All Pojos:
{{#each pojoArr1 as |pojo|}}
{{pojo.name}}
{{/each}}
<br>
Some Pojos:
{{#each pojoArr2 as |pojo|}}
{{pojo.name}}
{{/each}}
<br>
Intersect Pojos:
{{#each intersectPojos as |pojo|}}
{{pojo.name}}
{{/each}}
<br>
Diff Pojos:
{{#each diffPojos as |pojo|}}
{{pojo.name}}
{{/each}}
<br>
{
"version": "0.10.7",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.9.1",
"ember-data": "2.9.0",
"ember-template-compiler": "2.9.1",
"ember-testing": "2.9.1"
},
"addons": {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment