Skip to content

Instantly share code, notes, and snippets.

View givanse's full-sized avatar
:shipit:
ON A BOAT

Gastón Silva givanse

:shipit:
ON A BOAT
View GitHub Profile
@givanse
givanse / controllers.application.js
Last active November 20, 2016 07:10
re-compute only on value change
import Ember from 'ember';
let get = Ember.get;
let defaultFilter = function(value) { return value; };
function changeGate(dependentKey, filter) {
filter = filter || defaultFilter;
let computed = Ember.computed(function handler(key) {
let lastValueKey = `__changeGate${key}LastValue`;
@givanse
givanse / controllers.application.js
Last active April 7, 2017 02:06
Unrendered computeds
import Ember from 'ember';
// Two options:
// 1. eager load in the init hook
// for the initial render, won't re-calc after that.
// 2. another computed depending on the unrendered computed
// for property updates
export default Ember.Controller.extend({
@givanse
givanse / controllers.application.js
Created December 6, 2016 22:49
Working with Lists
import Ember from 'ember';
export default Ember.Controller.extend({
list: [
{name: 'r', color: 'red'},
{name: 'b', color: 'blue'},
{name: 'g', color: 'green'}
],
@givanse
givanse / controllers.application.js
Last active December 11, 2016 05:47
computed properties are marked as dirty on object change
import Ember from 'ember';
import changeGate from 'ember-computed-change-gate/change-gate';
/**
* To have computed properties that only trigger on value
* change you can use `ember-computed-change-gate`, it is
* an Ember CLI addon.
*
* https://github.com/GavinJoyce/ember-computed-change-gate
*/
@givanse
givanse / es6 compat table.md
Created February 23, 2017 01:25
es6 compat table

https://kangax.github.io/compat-table/es6/#chrome49

let browsers = ['ie7', 'ie8', 'ie9', 'ie10', 'ie11', 'edge12', 'edge13', 'edge14', 'konq414', 'firefox38', 'firefox43', 'firefox44', 'firefox45', 'firefox46', 'firefox47', 'firefox48', 'firefox49', 'firefox50', 'firefox51']; for (let browser of browsers) { console.log(`[data-browser='${browser}']`); document.querySelectorAll(`[data-browser='${browser}']`).forEach(function(e) { e.remove(); }) }
@givanse
givanse / components.child-component.js
Last active March 9, 2017 09:16
Two-way and One-way
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
oneWayInputUpdate: function(value) {
this.attrs.updateOneWay(value);
}
}
});
@givanse
givanse / components.child-component.js
Created March 9, 2017 23:34
bubbling actions and closure actions
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
greet: function() {
// I'm here just to bubble up the action
console.log('child: greet');
this.sendAction('greet');
}
}
@givanse
givanse / components.angle-component.js
Created March 10, 2017 02:37
angle bracket components
import Ember from 'ember';
export default Ember.Component.extend({
});
@givanse
givanse / components.foo-bar.js
Last active May 29, 2018 23:29
register component at runtime
import Ember from 'ember';
export default Ember.Component.extend({
value: 0
});
@givanse
givanse / components.c-item.js
Last active March 24, 2017 10:51
keep CSS private
import Ember from 'ember';
export default Ember.Component.extend({
classNames: ['item'],
classNameBindings: ['enabled:enabled:disabled']
});