Share
Embed
Transcript
130 slides
-
Build full-stack apps Feature development (in-house or staff-aug) Architecture &
Best-Practices consulting -
extend Gives you the ability to do classical inheritance class
Person extends Object { say(script) { return `${this.name} says: "${script}"`; } } const Person = Ember.Object.extend({ say(script) { return `${this.name} says: "${script}"`; } }); -
create Instantiates a new instance const Person = Ember.Object.extend({ say(script)
{ return `${this.name} says: "${script}"`; } }); let tom = Person.create({ name: 'Tom' }); tom.name // -> 'Tom' tom.say('Hello World'); // -> 'Tom says: "Hello World"' -
class Person { fullName() { return `${this.firstName} ${this.lastName}`; } });
let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; -
class Person { fullName() { return `${this.firstName} ${this.lastName}`; } });
let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.firstName // -> 'Tom' -
class Person { fullName() { return `${this.firstName} ${this.lastName}`; } });
let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.firstName // -> 'Tom' tom.lastName // -> 'Dale' -
class Person { fullName() { return `${this.firstName} ${this.lastName}`; } });
let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.firstName // -> 'Tom' tom.lastName // -> 'Dale' tom.fullName // -> function () { } -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.firstName // -> 'Tom' -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.firstName // -> 'Tom' tom.lastName // -> 'Dale' -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.firstName // -> 'Tom' tom.lastName // -> 'Dale' tom.fullName // -> 'Tom Dale' -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.firstName // -> 'Tom' -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.firstName // -> 'Tom' tom.lastName // -> 'Dale' -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.firstName // -> 'Tom' tom.lastName // -> 'Dale' tom.fullName // -> ComputedProperty { … } -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.get('firstName') // -> 'Tom' -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.get('firstName') // -> 'Tom' tom.get(‘lastName') // -> 'Dale' -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.get('firstName') // -> 'Tom' tom.get(‘lastName') // -> 'Dale' tom.get('fullName') // -> 'Tom Dale' -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.fullName // -> 'Tom Dale' -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.fullName // -> 'Tom Dale' tom.firstName = ‘Tomster’; -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.fullName // -> 'Tom Dale' tom.firstName = ‘Tomster’; tom.fullName // -> 'Tomster Dale' -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.get('fullName') // -> 'Tom Dale' -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.get('fullName') // -> 'Tom Dale' tom.firstName = ‘Tomster’ -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.get('fullName') // -> 'Tom Dale' tom.firstName = ‘Tomster’ tom.get('fullName') // -> 'Tom Dale' -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.get('fullName') // -> 'Tom Dale' -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.get('fullName') // -> 'Tom Dale' tom.set(‘firstName’, ‘Tomster’) -
const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return
`${this.firstName} ${this.lastName}`; }) }); let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.get('fullName') // -> 'Tom Dale' tom.set(‘firstName’, ‘Tomster’) tom.get('fullName') // -> 'Tomster Dale' -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; -
tom.get('fullName') // -> TypeError: tom.get is not a function class
Person { get fullName() { return `${this.firstName} ${this.lastName}`; } }); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; -
Ember.Observable import Ember from 'ember'; export default Mixin.create({ get(keyName) {
return Ember.get(this, keyName); }, set(keyName, value) { return Ember.set(this, keyName, value); } }); -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; Ember.get(tom, ’firstName') // -> 'Tom' -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; Ember.get(tom, ’firstName') // -> 'Tom' Ember.get(tom, ’lastName’) // -> 'Dale' -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; Ember.get(tom, ’firstName') // -> 'Tom' Ember.get(tom, ’lastName’) // -> 'Dale' Ember.get(tom, ’fullName’) // -> 'Tom Dale' -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; Ember.get(tom, ’fullName') // -> 'Tom Dale' -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; Ember.get(tom, ’fullName') // -> 'Tom Dale' Ember.set(tom, ’firstName’, ‘Tomster’) -
class Person { get fullName() { return `${this.firstName} ${this.lastName}`; }
}); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; Ember.get(tom, ’fullName') // -> 'Tom Dale' Ember.set(tom, ’firstName’, ‘Tomster’) Ember.get(tom, ’fullName') // -> 'Tomster Dale' -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); const
Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return `${this.firstName} ${this.lastName}`; }) }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.set(‘fullName’,
‘Yehuda Katz’) const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return `${this.firstName} ${this.lastName}`; }) }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.set(‘fullName’,
‘Yehuda Katz’) const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return `${this.firstName} ${this.lastName}`; }) }); Ember.get(tom, ’fullName') // -> ‘Yehuda Katz' -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.set(‘fullName’,
‘Yehuda Katz’) const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return `${this.firstName} ${this.lastName}`; }) }); Ember.get(tom, ’fullName') // -> ‘Yehuda Katz' tom.fullName // -> ‘Yehuda Katz' -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); const
Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return `${this.firstName} ${this.lastName}`; }).readOnly() }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); tom.set(‘fullName’,
‘Yehuda Katz’) // -> Cannot set read-only property "fullName" const Person = Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, function() { return `${this.firstName} ${this.lastName}`; }).readOnly() }); -
let tom = Person.create({ fullName: ‘Tom Dale’ }); const Person
= Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, { get() { return `${this.firstName} ${this.lastName}`; }, set(key, value) { let [firstName, lastName] = value.split(/ /); this.firstName = firstName; this.lastName = lastName; return value; } }) }); -
let tom = Person.create({ fullName: ‘Tom Dale’ }); const Person
= Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, { get() { return `${this.firstName} ${this.lastName}`; }, set(key, value) { let [firstName, lastName] = value.split(/ /); this.firstName = firstName; this.lastName = lastName; return value; } }) }); Ember.get(tom, ’firstName') // -> 'Tom' -
let tom = Person.create({ fullName: ‘Tom Dale’ }); const Person
= Ember.Object.extend({ fullName: Ember.computed(‘firstName’, ‘lastName’, { get() { return `${this.firstName} ${this.lastName}`; }, set(key, value) { let [firstName, lastName] = value.split(/ /); this.firstName = firstName; this.lastName = lastName; return value; } }) }); Ember.get(tom, ’firstName') // -> 'Tom' Ember.get(tom, ’lastName’) // -> 'Dale' -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, function() { let local
= Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, function() { let local
= Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); Ember.get(keyword, ’value') // -> ‘Un petit cheval' let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, function() { let local
= Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); Ember.get(keyword, ’value') // -> ‘Un petit cheval' let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, function() { let local
= Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); Ember.get(keyword, ’value') // -> ‘Un petit cheval' let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) Ember.get(keyword, ’value') // -> ‘A small horse' -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, function() { let local
= Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, function() { let local
= Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, function() { let local
= Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) Ember.get(keyword, ’value') // -> ‘A small horse' -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, function() { let local
= Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) Ember.get(keyword, ’value') // -> ‘A small horse' Ember.set(keyword, ’en’, ‘A medium horse’) -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, function() { let local
= Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) Ember.get(keyword, ’value') // -> ‘A small horse' Ember.set(keyword, ’en’, ‘A medium horse’) Ember.get(keyword, ’value') // -> ‘A small horse' -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, ‘en’, ‘fr’, function() {
let local = Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, ‘en’, ‘fr’, function() {
let local = Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, ‘en’, ‘fr’, function() {
let local = Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) Ember.get(keyword, ’value') // -> ‘A small horse' -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, ‘en’, ‘fr’, function() {
let local = Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) Ember.get(keyword, ’value') // -> ‘A small horse' Ember.set(keyword, ’en’, ‘A medium horse’) -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, ‘en’, ‘fr’, function() {
let local = Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) Ember.get(keyword, ’value') // -> ‘A small horse' Ember.set(keyword, ’en’, ‘A medium horse’) Ember.get(keyword, ’value') // -> ‘A medium horse' -
const Keyword = Ember.Object.extend({ value: Ember.computed(‘locale’, ‘????????’, function() { let
local = Ember.get(this, ‘locale’); return Ember.get(this, locale); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); -
const Keyword = Ember.Object.extend({ localeChanged: Ember.observer(‘locale’, function() { let currentLocale
= Ember.get(this, ‘locale’); let cp = Ember.computed(currentLocale, function() { return Ember.get(this, currentLocale); }); Ember.defineProperty(this, ’value’, cp); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); -
const Keyword = Ember.Object.extend({ localeChanged: Ember.observer(‘locale’, function() { let currentLocale
= Ember.get(this, ‘locale’); let cp = Ember.computed(currentLocale, function() { return Ember.get(this, currentLocale); }); Ember.defineProperty(this, ’value’, cp); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.set(keyword, ’locale’, ‘en’) -
const Keyword = Ember.Object.extend({ localeChanged: Ember.observer(‘locale’, function() { let currentLocale
= Ember.get(this, ‘locale’); let cp = Ember.computed(currentLocale, function() { return Ember.get(this, currentLocale); }); Ember.defineProperty(this, ’value’, cp); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.get(keyword, ’value') // -> ‘A small horse' Ember.set(keyword, ’locale’, ‘en’) -
const Keyword = Ember.Object.extend({ localeChanged: Ember.observer(‘locale’, function() { let currentLocale
= Ember.get(this, ‘locale’); let cp = Ember.computed(currentLocale, function() { return Ember.get(this, currentLocale); }); Ember.defineProperty(this, ’value’, cp); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.get(keyword, ’value') // -> ‘A small horse' Ember.set(keyword, ’en’, ‘A medium horse’) Ember.set(keyword, ’locale’, ‘en’) -
const Keyword = Ember.Object.extend({ localeChanged: Ember.observer(‘locale’, function() { let currentLocale
= Ember.get(this, ‘locale’); let cp = Ember.computed(currentLocale, function() { return Ember.get(this, currentLocale); }); Ember.defineProperty(this, ’value’, cp); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.get(keyword, ’value') // -> ‘A small horse' Ember.set(keyword, ’en’, ‘A medium horse’) Ember.get(keyword, ’value') // -> ‘A medium horse' Ember.set(keyword, ’locale’, ‘en’) -
const Keyword = Ember.Object.extend({ localeChanged: Ember.observer(‘locale’, function() { let currentLocale
= Ember.get(this, ‘locale’); let cp = Ember.computed(currentLocale, function() { return Ember.get(this, currentLocale); }); Ember.defineProperty(this, ’value’, cp); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); -
const Keyword = Ember.Object.extend({ localeChanged: Ember.observer(‘locale’, function() { let currentLocale
= Ember.get(this, ‘locale’); let cp = Ember.computed(currentLocale, function() { return Ember.get(this, currentLocale); }); Ember.defineProperty(this, ’value’, cp); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.get(keyword, ’value') // -> undefined -
const Keyword = Ember.Object.extend({ init() { this.localeChanged(); }, localeChanged: Ember.observer(‘locale’,
function() { let currentLocale = Ember.get(this, ‘locale’); let cp = Ember.computed(currentLocale, function() { return Ember.get(this, currentLocale); }); Ember.defineProperty(this, ’value’, cp); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); -
const Keyword = Ember.Object.extend({ init() { this.localeChanged(); }, localeChanged: Ember.observer(‘locale’,
function() { let currentLocale = Ember.get(this, ‘locale’); let cp = Ember.computed(currentLocale, function() { return Ember.get(this, currentLocale); }); Ember.defineProperty(this, ’value’, cp); }) }); let keyword = Keyword.create({ en: ‘A small horse’, fr: ‘Un petit cheval’, locale: ‘fr’ }); Ember.get(keyword, ’value') // -> ‘Un petit cheval' -
const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }
}); let goku = SuperPerson.create(); const SuperPerson = Ember.Object.extend({ init() { this.powerLevel = 90001; } }); -
const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }
}); let goku = SuperPerson.create(); Ember.get(goku, ’friends') // -> undefined const SuperPerson = Ember.Object.extend({ init() { this.powerLevel = 90001; } }); -
const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }
}); let goku = SuperPerson.create(); Ember.get(goku, ’friends') // -> undefined const SuperPerson = Ember.Object.extend({ init() { this.powerLevel = 90001; } }); Ember.get(goku, ’powerLevel') // -> 9001 -
const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }
}); let goku = SuperPerson.create(); const SuperPerson = Ember.Object.extend({ init() { this._super(…arguments); this.powerLevel = 90001; } }); -
const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }
}); let goku = SuperPerson.create(); Ember.get(goku, ’friends') // -> [] const SuperPerson = Ember.Object.extend({ init() { this._super(…arguments); this.powerLevel = 90001; } }); -
const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }
}); let goku = SuperPerson.create(); Ember.get(goku, ’friends') // -> [] const SuperPerson = Ember.Object.extend({ init() { this._super(…arguments); this.powerLevel = 90001; } }); Ember.get(goku, ’powerLevel') // -> 9001 -
const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }
}); const Person = Ember.Object.extend({ friends: Ember.A(); }); vs -
const Person = Ember.Object.extend({ friends: Ember.A(); }); let tom =
Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); -
const Person = Ember.Object.extend({ friends: Ember.A(); }); let tom =
Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] -
const Person = Ember.Object.extend({ friends: Ember.A(); }); let tom =
Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] Ember.get(yehuda, ’friends') // -> [] -
const Person = Ember.Object.extend({ friends: Ember.A(); }); let tom =
Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] Ember.get(yehuda, ’friends') // -> [] Ember.get(yehuda, ’friends’).push(tom) -
const Person = Ember.Object.extend({ friends: Ember.A(); }); let tom =
Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] Ember.get(yehuda, ’friends') // -> [] Ember.get(yehuda, ’friends’).push(tom) Ember.get(yehuda, ’friends') // -> [tom] -
const Person = Ember.Object.extend({ friends: Ember.A(); }); let tom =
Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] Ember.get(yehuda, ’friends') // -> [] Ember.get(yehuda, ’friends’).push(tom) Ember.get(tom, ’friends') // -> [tom] Ember.get(yehuda, ’friends') // -> [tom] -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); } }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); } }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] Ember.get(yehuda, ’friends') // -> [] const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); } }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] Ember.get(yehuda, ’friends') // -> [] Ember.get(yehuda, ’friends’).push(tom) const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); } }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] Ember.get(yehuda, ’friends') // -> [] Ember.get(yehuda, ’friends’).push(tom) Ember.get(yehuda, ’friends') // -> [tom] const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); } }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(tom, ’friends') // -> [] Ember.get(yehuda, ’friends') // -> [] Ember.get(yehuda, ’friends’).push(tom) Ember.get(tom, ’friends') // -> [] Ember.get(yehuda, ’friends') // -> [tom] const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); } }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); } }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(yehuda, ’friends’).push(tom) const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); } }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }, bffs: Ember.computed.filterBy(‘friends’, ‘bff’, true); }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(yehuda, ’friends’).push({ friend: tom, bff: true }) const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }, bffs: Ember.computed.filterBy(‘friends’, ‘bff’, true); }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(yehuda, ’friends’).push({ friend: tom, bff: true }) const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }, bffs: Ember.computed.filterBy(‘friends’, ‘bff’, true); }); Ember.get(yehuda, ’friends') // -> [{ friend: tom, bff: true }] -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(yehuda, ’friends’).push({ friend: tom, bff: true }) const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }, bffs: Ember.computed.filterBy(‘friends’, ‘bff’, true); }); Ember.get(yehuda, ’friends') // -> [{ friend: tom, bff: true }] Ember.get(yehuda, ’bffs') // -> [] -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }, bffs: Ember.computed.filterBy(‘friends’, ‘bff’, true); }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(yehuda, ’friends’).pushObject({ friend: tom, bff: true }) const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }, bffs: Ember.computed.filterBy(‘friends’, ‘bff’, true); }); -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(yehuda, ’friends’).pushObject({ friend: tom, bff: true }) const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }, bffs: Ember.computed.filterBy(‘friends’, ‘bff’, true); }); Ember.get(yehuda, ’friends') // -> [{ friend: tom, bff: true }] -
let tom = Person.create({ firstName: ‘Tom’, lastName: ‘Dale’ }); let
yehuda = Person.create({ firstName: ‘Yehuda’, lastName: ‘Katz’ }); Ember.get(yehuda, ’friends’).pushObject({ friend: tom, bff: true }) const Person = Ember.Object.extend({ init() { this.friends = Ember.A(); }, bffs: Ember.computed.filterBy(‘friends’, ‘bff’, true); }); Ember.get(yehuda, ’friends') // -> [{ friend: tom, bff: true }] Ember.get(yehuda, ’bffs') // -> [{ friend: tom, bff: true }] -
class Person { @computed(‘firstName’, ‘lastName’) get fullName() { return `${this.firstName}
${this.lastName}`; } }); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; -
class Person { @computed(‘firstName’, ‘lastName’) get fullName() { return `${this.firstName}
${this.lastName}`; } }); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.firstName // -> 'Tom' -
class Person { @computed(‘firstName’, ‘lastName’) get fullName() { return `${this.firstName}
${this.lastName}`; } }); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.firstName // -> 'Tom' tom.lastName // -> 'Dale' -
class Person { @computed(‘firstName’, ‘lastName’) get fullName() { return `${this.firstName}
${this.lastName}`; } }); let tom = new Person(); tom.firstName = ‘Tom’; tom.lastName = ‘Dale’; tom.firstName // -> 'Tom' tom.lastName // -> 'Dale' tom.fullName // -> 'Tom Dale'