Skip to content

Instantly share code, notes, and snippets.

@neborn
neborn / components.my-component\.js
Last active August 8, 2020 00:06
Configurations in the Container
import Component from '@glimmer/component';
import { inject as configuration } from '../utils/configuration';
export default class extends Component {
@configuration
myConfiguration;
get sameConfiguration() {
return this.args.configuration == this.myConfiguration;
}
import Component from '@ember/component';
import { action, set } from '@ember/object';
export default class extends Component {
@action
updateAppName() {
set(this, 'appName', 'Updated from JS');
}
}
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
}
@neborn
neborn / controllers.application\.js
Created May 20, 2020 20:41
Helpers and Tracked Properties
import Controller from '@ember/controller';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
export default class ApplicationController extends Controller {
@service myService;
@tracked foo = 'hello';
@action
@neborn
neborn / controllers.application\.js
Created May 12, 2020 23:03
Keep Latest Task - In Order
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { keepLatestTask, task } from 'ember-concurrency-decorators';
import { didCancel, timeout } from 'ember-concurrency';
export default class ApplicationController extends Controller {
n = 0;
@keepLatestTask
* fooTask() {
@neborn
neborn / controllers.application\.js
Created May 12, 2020 22:53
Keep Latest Task - Out of Order
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { keepLatestTask } from 'ember-concurrency-decorators';
import { didCancel, timeout } from 'ember-concurrency';
export default class ApplicationController extends Controller {
n = 0;
@keepLatestTask
* fooTask() {
import Component from '@glimmer/component';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
export default class extends Component {
@service
configuration;
@tracked
@neborn
neborn / controllers.application\.js
Last active March 3, 2020 01:16
Observer Not Triggered On CP
import Controller from '@ember/controller';
import { action, computed, get, set } from '@ember/object';
import { A } from '@ember/array';
import { observes } from '@ember-decorators/object';
import { addObserver } from '@ember/object/observers';
export default class ApplicationController extends Controller {
myArr = A();
@computed('myArr.[]')
@neborn
neborn / components.my-component.js
Last active October 31, 2019 04:31
Observing Global State
import Ember from 'ember';
export default Ember.Component.extend({
globalState: Ember.inject.service(),
foo: Ember.computed('globalState.state', function() {
console.log('foo');
this.globalState.state;
return 'Foo';
}),
bar: Ember.computed('foo', function() {
@neborn
neborn / controllers.application.js
Created September 25, 2019 16:52
Reducer Lookup
import Ember from 'ember';
import { getOwner } from '@ember/application';
export default Ember.Controller.extend({
init() {
this._super(...arguments);
const reducer = getOwner(this).lookup('reducer:index');
const state = reducer();
this.set('appName', state.foo);
}