Skip to content

Instantly share code, notes, and snippets.

@runspired
Last active June 19, 2020 23:39
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 runspired/58a16374ad4acb95e0f5958747185bc0 to your computer and use it in GitHub Desktop.
Save runspired/58a16374ad4acb95e0f5958747185bc0 to your computer and use it in GitHub Desktop.
Bug Demo
import Controller from '@ember/controller';
import EmberObject, { get, set } from '@ember/object';
import { getOwner } from '@ember/application';
const RecordMeta = new WeakMap();
function getRecordMeta(record) {
let meta = RecordMeta.get(record);
if (meta === undefined) {
meta = Object.create(null);
RecordMeta.set(record, meta);
}
return meta;
}
class Model extends EmberObject {
get isError() {
let meta = getRecordMeta(this);
let isError = get(meta, 'isError');
return isError !== undefined ? isError : false;
}
set isError(v) {
let meta = getRecordMeta(this);
set(meta, 'isError', v);}
}
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
get records() {
let owner = getOwner(this);
owner.register('model:user', Model);
let factory = owner.factoryFor(`model:user`);
let record = factory.create({ name: 'Chris', isError: true });
return [record];
}
}
<h1>Welcome to {{this.appName}}</h1>
<br>
<ul>
{{#each this.records as |record|}}
<li>
{{record.name}}: {{if record.isError 'isError' 'not isError'}}
</li>
{{/each}}
</ul>
<br>
{{outlet}}
<br>
<br>
{
"version": "0.17.1",
"EmberENV": {
"FEATURES": {},
"_TEMPLATE_ONLY_GLIMMER_COMPONENTS": false,
"_APPLICATION_TEMPLATE_WRAPPER": true,
"_JQUERY_INTEGRATION": true
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js",
"ember": "3.18.1",
"ember-template-compiler": "3.18.1",
"ember-testing": "3.18.1"
},
"addons": {
"@glimmer/component": "1.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment