Cu ajutorul lui selectez un proiect, iar acestui proiect ii sunt aferente niste achizitii(one-to-many), achizitiile le afisez intr-un tabel cu ajutorul directivei ng-repeat, in felul urmator:
Functia changeProject() apelata la change-ul din select este definita in controllerul angular in felul urmator:
scope.changeProject = function () {
.post(‘achizitii/’+this.project).success(function($data){ scope.achizities = .parseJSON($data);
});
}
Controllerul Laravel care intoarce datele este urmatorul:
public function postGetAchizitii($id){
if(Request::ajax()) {
$q = DB::table('achizities')->where('project_id', $id)->get();
return json_encode($q);
}
}
Bun, acum problema este ca dupa ce selectez un proiect, in controllerul Angular vine jsonul din php, dar nu mi se seteaza modelul “achizities” ca sa-mi faca ng-repeat-ul din tabel, abia dupa ce selectez urmatorul proiect, imi face modelul “achizities” cel precedent, si tot asa mai departe, deci are delay de un pas.
Nu ar trebui sa fie diferente intre cele doua variante, la nivel de Laravel banuiesc ca tot json returneaza chiar daca nu specifici asta in mod explicit.
By the way, daca pe pagina unde am in view afisate niste modele (ex. Inregistrari: {[ achizities.length ]}), si de obicei daca revin cu back in pagina respectiva imi apare sintaxa asta din view
De obicei e o eroare JS la mijloc, codul de Angular care ar trebui sa faca replace-ul de valori nu apuca sa se execute. Poti verifica in consola de browser care e problema. Probabil e legata de problema urmatoare.
Cand vei naviga intre pagini te vei lovi de problema de state si routing diferit intre aplicatia angular si laravel. Tot ce faci pe pagina (exemplu ai un formular cu mai multe action-uri Ajax) la back se pierde deci utilizatorul va trebui sa introduca datele din nou. Daca asta nu e problema ignora ce am scris mai jos.
In PHP in cazul respectiv puteai sa ai rute ceva de genul:
/projects
iar dupa selectarea proiect:
/project/12/achizitii
Asa poti sa navighezi intre pagini si nu se pierde state-ul curent al aplicatiei. In cazul unui SPA facut cu Angular e recomandat sa ai rute pentru a stoca starea curenta a aplicatiei si a putea naviga intre pagini fara probleme (se foloseste serviciul $location pentru manipularea URL) si a face update la state.