Show Menu
Cheatography

EmberJs - Ember Models Cheat Sheet (DRAFT) by

Reminder für die wichtigsten Dinge von Ember Model

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Ember Model Aufbau

App.Person = DS.Model.extend({
  firstName: DS.attr('string'),
  lastName: DS.attr('string'),
  isPersonOfTheYear: DS.attr('boolean')
});
Aufbau eines Models

DS.attr defaul­tValue

String
DS.att­r('­boo­lean', {defau­ltV­alue: false})
Funktion
DS.att­r('­str­ing', { defaul­tValue: function() { return new Date(); }})
Der zweite optionale Parameter steht für den "­def­aul­tVa­lue­". Kann ein String oder Funktion sein.

Custom Transf­orm­ations

Transf­orm­ations bieten die Möglic­hkeit neue Datentypen anzulegen die sich auf ein Model Attribute beziehen.

Rekursion gutes Beispiel

 

test

isPers­onO­fTh­eYear
Mehrer Wörter camilezied
Ist der Attribut Name im Model camelized, muss dieser auch von der API camelized

Store find

this.s­tor­e.f­ind­('p­ost', 1)
GET /posts/1
this.s­tor­e.f­ind­('p­erson', { name: "­Pet­er" });
GET /perso­ns?­nam­e='­Peter'
Liefert ein DS.Pro­mis­eArray zurück was zu einem DS.Rec­ord­Array wird, wenn alle Daten im Store sind.

Record Methods

person.ge­t('­isD­irty')
true/false Ist ein Wert geändert, aber noch nicht gespei­chert
person.ch­ang­edA­ttr­ibu­tes()
welche werte wurden geändert
person.ro­llb­ack()
setzt geändert (aber noch nicht gespei­che­rte??) werte zurück;
Alle Methoden beziehen sich auf einen Record
 

EXPLICIT INVERSES

Bei mehreren HasMany Bezieh­ungen zum gleichen Model kann mit expliziten Inverses Ember gesagt werden welches Attribut aktual­isiert werden muss.

Etwas anlegen

store.c­re­ate­Rec­ord()
Eintrag erstellen
Wichtig. Alle überge­benen Daten müssen zum Zeitpunkt der Erstellung
existi­eren. Siehe auch: http:/­/em­ber­js.c­om­/gu­ide­s/m­ode­ls/­cre­ati­ng-­and­-de­let­ing­-re­cords/

Etwas loeschen

var post = store.find('post', 1);
post.deleteRecord();
post.get('isDeleted'); // => true
post.save(); // => DELETE to /posts/1

// ODER

var post = store.find('post', 1);
post.destroyRecord(); // => DELETE to /posts/1
Der Unters­chied der Funktion ist: 1. Solange bei der ersten Möglic­hkeit nicht das save() ausgeführt wurde ist die Löschung nur auf der Client Site, und wird nicht an den Server geschickt. Funktion zwei ist die Kurzform von 1