Descriere

addon ember-cli care ofera o harta simpla de identitate pentru aplicatiile web ember.js

Instalare

ember instalati ember-cli-simple-store

Aveti 6 metode: push / pushArray / remove / find / findOne / clear

// creati sau actualizati modelul de persoana simpleStore.push („persoana”, {id: 1, nume: „toran”});
// creati sau actualizati modele cu mai multe persoane – observatorii sunt anuntati numai dupa ce toate modelele au fost create sau actualizate simpleStore.pushArray (“persoana”, [{id: 1, nume: “john”}, {id: 2, nume: ” jane “}]);
// elimina modelul de persoana cu id = 123 simpleStore.remove („persoana”, 123);
// gasiti toate modelele de persoana simpleStore.find („persoana”);
// gasiti un model pentru o singura persoana cu id = 123 simpleStore.find („persoana”, 123);
// gasiti toate modelele de persoane cu account_id = 789 simpleStore.find („persoana”, {account_id: 789});
// gasiti toate modelele de persoane cu numele toran si salariu> 100 var filtru = functie (persoana) {var nume = persoana.get („nume”); var salariu = person.get (“salariu”); returnare nume === “toran” && salariu> 100; } simpleStore.find („persoana”, filtru);
// gasiti modelul pentru prima persoana simpleStore.findOne („persoana”);
// stergeti intreaga harta de identitate a tuturor modelelor de persoane simpleStore.clear („persoana”);
// stergeti intreaga harta a identitatii tuturor modelelor simpleStore.clear ();

Utilizarea magazinului prin exemplu

Mai jos va voi arata cum puteti utiliza magazinul cu un obiect simplu pentru a gasi / adauga / elimina / actualiza

Exemplul complet de mai jos se bazeaza pe un mic addon xhr PromiseMixin

import Ember din „ember”; import PromiseMixin din „ember-promise / mixins / promise”; var PersonRepository = Ember.Object.extend ({simpleStore: Ember.inject.service (), find () {var simpleStore = this.get (“simpleStore”); returneaza PromiseMixin.xhr (“/ api / people /”, ” GET “). Apoi (functie (raspuns) {response.forEach (functie (persoana) {simpleStore.push (” persoana “, persoana);}); intoarcere simpleStore.find (” persoana “);});}, findById (id) {var simpleStore = this.get (“simpleStore”); returneaza SimpleStore.find (“persoana”, id);}, introduceti (persoana) {var simpleStore = this.get (“simpleStore”); var hash = {data: JSON.stringify (person)}; returneaza Ember.RSVP.Promise nou (functie (rezolva, respinge) {return PromiseMixin.xhr (“/ api / people /”, “POST”, hash). apoi (functie (persistent) {var inserat = simpluStore.push („persoana”, persistat); rezolva (inserat);}, functie (eroare) {respinge (eroare);}); }); }, update (person) {var person_id = person.get (“id”); var hash = {data: JSON.stringify (person)}; var endpoint = “/api/people/%@/”.fmt(person_id); returneaza PromiseMixin.xhr (punct final, “PUT”, hash); }, eliminati (persoana) {var simpleStore = this.get (“simpluStore”); var person_id = person.get (“id”); var endpoint = “/api/people/%@/”.fmt(person_id); returneaza Ember.RSVP.Promise (functie (rezolva, respinge) {return PromiseMixin.xhr (punct final, „DELETE”). apoi (functie (arg) {simpleStore.

sobar tetas folladas peludas
incesto gratis nenas peludas
trios x sol sanchez actriz porno
porno español trans pilladas sin bragas
vidios xxx sione cooper
xxporn jovencita caliente
videos putas maduras viejas calientes
vidio xxxx porno comic español
natalia sanchez desnuda videos porno peruano
vidiosxxx porno gay guarro
española folla shakira follando
gitanas follando maduras españolas anal
sexporno sexo gratis incesto
porni enanas porno
xxxespañol tetas puntiagudas
scat lesbianas follando española
pareja follando en la playa pormo
trio con gordas pajas en coche
porno gay chino trio amateur español
pollas corriendose videos caserosxxx

remove („persoana”, person_id); resolve (arg); }, functie (eroare) {respinge (eroare);});}); }}); export implicit PersonRepository;

Dar sprijinul pentru relatii?

Un exemplu intre mai multi ar putea arata cam asa

import Ember din „ember”; export implicit Ember.Object.extend ({simpleStore: Ember.inject.service (), rol: Ember.computed.alias (‘appartine_to.firstObject’), apartine_to: Ember.computed (functie () {let userId = this.get (‘id’); let simpleStore = this.get (‘simpleStore’); let filter = functie (rol) {let users = role.get (‘users’); return Ember. $. inArray (userId, users)> -1;}; returneaza SimpleStore.find (‘rol’, filtru);})}); // un test pentru a arata cum functioneaza aceasta API din testul exterior („proprietatea rolului returneaza modelul asociat sau nedefinit”, functie (afirmare) {let user = simpleStore.push („user”, {id: 1}); simpleStore. push (‘rol’, {id: 2, nume: ‘Admin’, utilizatori: [1]}); let role = user.get (‘rol’); assert.equal (role.get (‘id’), 2); assert.equal (role.get (‘nume’) ), „Administrator”); role.set („utilizatori”, []); rol = user.get (‘rol’); assert.equal (rol, nedefinit); });

Ce zici de urmarirea murdara?

Daca doriti posibilitatea de a urmari daca modelul dvs. este murdar, utilizati attr pentru fiecare camp si Modelul pentru a obtine salvare / revenire

importati {attr, Model} din „ember-cli-simple-store / model”; var Person = Model.extend ({firstName: attr (), lastName: attr (), fullName: function () {var first = this.get (“firstName”); var last = this.get (“lastName”); returneaza primul + “” + ultimul;} .property (“prenumele”, “prenumele”)}); // salvati obiectul pentru a reseta isDirty var person = Person.create ({id: 1, firstName: “x”, lastName: “y”}); person.set (“prenume”, “toran”); person.save (); // retrageti obiectul pentru a reseta isDirty si restaurati-l person.set (“prenume”, “foobar”); person.rollback ();

Daca doriti sa stiti daca o proprietate individuala este murdara, puteti intreba asa

person.get (“firstNameIsDirty”); // persoana nedefinita.set (“prenume”, “foobar”); person.get (“firstNameIsDirty”); //Adevarat

Pentru formularele noi care incep cu proprietati nedefinite, puteti defini starea implicita pentru isDirty. Exemplu: aveti un model care este legat de un formular cu o intrare caseta de selectare. Formularul de creare incepe cu un model nou, astfel incat fiecare proprietate legata este nedefinita. Daca utilizatorul decide sa bifeze caseta de selectare legata (setand valoarea la true) si apoi decide sa o debifeze (setand valoarea la false), v-ati astepta ca formularul sa nu fie murdar – dar pentru ca nedefinit! == false, gasiti ca modelul este murdar. Pentru a preveni acest comportament, setati o valoare implicita pentru urmarirea murdara a modelelor attr.

var Animal = Model.extend ({omnivore: attr (false)}); var animal = Animal.create (); animal.get (“omnivor”); // nedefinit animal.get („esteDirty”); // false animal.set (“omnivor”, adevarat); animal.get („esteDirty”); // adevarat animal.set („omnivor”, fals); animal.get („esteDirty”); //fals

Dar despre cheile primare personalizate?

In mod implicit, magazinul simplu va utiliza proprietatea „id” din inregistrarile dvs. ca cheie principala. Daca doriti sa inlocuiti acest lucru, redeschideti clasa de model si adaugati un atribut primaryKey.

var Food = Ember.Object.extend ({food_id: nul, calorii: nul}); Food.reopenClass ({primaryKey: ‘food_id’}); simpleStore.push („mancare”, {food_id: 5, calorii: 500}); // Returneaza inregistrarea impinsa simpleStore.find („mancare”, 5);

Exemple de aplicatii

Cel mai simplu exemplu cu cea mai mica complexitate (teste incluse)

https://github.com/toranb/kanban-board-without-ember-data

Exemplu simplu care ruleaza ember 2.4

https://github.com/toranb/ember-2-skeleton-app

Exemplu asincron care se va picta imediat (sectiunea de incarcare inclusa cu teste)

https://github.com/toranb/async-kanban-board-store-example

Exemplu asincron cu relatii (sectiunea de incarcare inclusa cu teste)

https://github.com/toranb/async-kanban-with-relationships-store-example

Exemplu de urmarire murdara, atat cu salvare, cat si cu restabilire

https://github.com/toranb/ember-cli-store-dirty-tracking-example

Rularea testelor unitare

Licenta

Drepturi de autor © 2015 Toran Billups http://toranbillups.com

Licentiat sub licenta MIT