Skip to content

Instantly share code, notes, and snippets.

@fivetanley
Created January 10, 2018 17:36
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 fivetanley/00c1eff42109bf28769cfab3f808503e to your computer and use it in GitHub Desktop.
Save fivetanley/00c1eff42109bf28769cfab3f808503e to your computer and use it in GitHub Desktop.
New Twiddle
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
});
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
unload() {
const clients = this.store.peekAll('client');
clients.filterBy('isCool').forEach((client) => {
client.unloadRecord();
});
clients.filterBy('hasDirtyAttributes').forEach(client => {
client.unloadRecord();
});
}
}
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
isCool: attr()
});
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel() {
const { store } = this;
// cool
this.store.push({
data: {
id: '1',
type: 'client',
attributes: {
isCool: true
}
}
});
// not cool
this.store.push({
data: {
id: '2',
type: 'client',
attributes: {
isCool: false
}
}
});
// will get deleted later
this.store.push({
data: {
id: '3',
type: 'client',
attributes: {
isCool: true
}
}
});
const dirty = this.store.peekRecord('client', 3);
dirty.set('isCool', false);
},
model() {
return this.store.peekAll('client');
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
Clients
<ul>
{{#each model as |client|}}
<li>ID: {{client.id}} hasDirtyAttributes: {{client.hasDirtyAttributes}} isCool: {{client.isCool}}</li>
{{/each}}
</ul>
total clients: {{model.length}}
Expected:
clicking the button should unload records 1 and 3.<br><br>
Actual:
Get an error because the filterBy('isCool').forEach(client => client.unloadRecord()) leaves `null` in `this.store.peekAll('client')`.<br><br>
<button {{action "unload"}}>
Unload isCool=true and dirty records
</button>
{
"version": "0.13.0",
"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.16.2",
"ember-template-compiler": "2.16.2",
"ember-testing": "2.16.2"
},
"addons": {
"ember-data": "2.16.3"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment