Skip to content

Instantly share code, notes, and snippets.

View NullVoxPopuli's full-sized avatar

NullVoxPopuli

View GitHub Profile
@NullVoxPopuli
NullVoxPopuli / controllers.application\.js
Last active March 2, 2021 03:14
Route Lifecycle Example
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
queryParams = ['foo'];
}
@NullVoxPopuli
NullVoxPopuli / controllers.application\.js
Last active February 1, 2021 18:28
Enumerable Properties Demo
import Controller from '@ember/controller';
import EmberObject, { computed } from '@ember/object';
const MyObject = EmberObject.extend({
prop: computed(function() {}),
});
class Foo {
// getters are not enumerable!, but properties are
get prop() {
@NullVoxPopuli
NullVoxPopuli / controllers.application\.js
Created December 3, 2020 17:33
Why - setting value on pojo
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
constructor() {
super(...arguments);
console.log('initial', this.thePojo);
@NullVoxPopuli
NullVoxPopuli / components.data-provider\.js
Created October 31, 2020 02:16
Demo from Tweet - 2020-10-30
import Component from '@glimmer/component';
import { setComponentTemplate } from '@ember/component';
import { hbs } from 'ember-cli-htmlbars';
export default setComponentTemplate(
hbs`
{{yield this.existingData this.emptyData}}
`,
class DataProvider extends Component {
get emptyData() {}
@NullVoxPopuli
NullVoxPopuli / controllers.application\.js
Last active October 1, 2020 21:48
Model is ran every visit
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
}
@NullVoxPopuli
NullVoxPopuli / components.info\.hbs
Last active September 27, 2020 18:15
Custom Link Component
Routing Info:
<dl>
<dt>currentURL</dt>
<dd>{{this.router.currentURL}}</dd>
<dt>currentRoute</dt>
<dd>{{this.router.currentRouteName}}</dd>
</dl>
import Component from '@glimmer/component';
import {tracked} from "@glimmer/tracking";
export default class extends Component {
@tracked name;
constructor (...args){
super(...args);
this.name = "foo";
@NullVoxPopuli
NullVoxPopuli / controllers.application\.js
Last active September 15, 2020 21:29
Tracked Builtins Demo
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { tracked } from 'tracked-built-ins';
export default class ApplicationController extends Controller {
@tracked myArray = tracked([]);
@action pushNum() {
let num = Math.random();
@NullVoxPopuli
NullVoxPopuli / controllers.application\.js
Last active September 15, 2020 13:49
Ember Recursioncy
import Controller from '@ember/controller';
import { task } from 'ember-concurrency-decorators';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
constructor() {
super(...arguments);
this.myTask.perform(0);
import Controller from '@ember/controller';
import EmberObject from '@ember/object';
function logged(target, key, descriptor) {
let { initializer } = descriptor;
let get = function() {
console.log(`Get ${key}`); // DOES NOT LOG!
return initializer();
};