Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> AngularJS - Dostęp do zmiennej globalnej - dane JSON
LowiczakPL
post 22.03.2016, 12:34:45
Post #1





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Jako naukę angulara wybrałem sobie za zadanie napisanie prościutkiej gry
na WWW: http://gra.w16.pl/angular/
na GITHUBie: https://github.com/RobertRorog/appGame

Mam problem ze zmienną globalną, wczytuję tablicę z wartościami z pliku JSONa i nie mogę się do nich dostać w żaden sposób w aplikacji.


<script>
var app = angular.module('myApp', []), global={};
app.controller('customersCtrl', function($scope, $http) {


$http.get("customers.php").then(function (response) {
$scope.myData = response.data.records;
global.obj = response.data.records;
console.log(global); // tu jest OK JSON ladnie sie wczytal
});

console.log(global); // ale potrzebuje tu sie dostac do wartosci i nie sa widoczne

});
</script>

Ten post edytował LowiczakPL 22.03.2016, 14:35:08


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
nospor
post 22.03.2016, 12:36:53
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A w konsoli w jakiej kolejnosci widzisz console.log ?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post 22.03.2016, 12:51:47
Post #3





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


no faktycznie najpierw widzę to co potrzebuje a dopiero to co jest wczytanie

pusty obiekt

request get

pełny obiekt

jak to zmienić aby poczekać na get i odwołać się do obiektu po wykonaniu requestu?

Ten post edytował LowiczakPL 22.03.2016, 13:03:32


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
nospor
post 22.03.2016, 13:05:14
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Po to wlasnie jest .then by zlapac co po zakonczeniu requestu, Czemu tam nie zrobisz co masz zrobic?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post 22.03.2016, 13:14:57
Post #5





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


kombinuję na różne sposoby ale poza funkcją wczytania JSONA dane nie są widoczne

mam fabrykę z then i w niej jest ok ale poza już nie widać nic, za słaby jeszcze jestem w JSie

  1. factoryMinesData.getData().then(function(data){
  2. $scope.listOfMines = data[1];
  3. $scope.resGold = data[1][0].resources.res;
  4. $scope.resStone = data[1][1].resources.res;
  5. $scope.resWood = data[1][2].resources.res;
  6. $scope.resStorage = data[1][3].resources.res;
  7. console.log(data[1]);
  8. });
  9.  
  10. console.log($scope.listOfMines); // nie wiczać



--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
nospor
post 22.03.2016, 13:24:02
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zrozum wkoncu, ze to jest AJAX i jest ASYNCHRONICZNY. Po to wlasnie jest THEN by w nim robic wszystko co ma sie robic po wczytaniu ajax. Czemu nie chcesz tego zrobic THEN tylko sie upierasz i ciagle robisz poza THEN??


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post 22.03.2016, 13:37:43
Post #7





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Nie upieram się tylko z mojej niewiedzy chciałem mieć globalny dostęp do obiektu tablicy JSON po jej wczytaniu.

Dzięki za podpowiedź.





--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
nospor
post 22.03.2016, 13:41:41
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




I masz po jej wczytaniu. Ino tylko ze wczytanie nastepuje pozniej niz ci sie wydawalo wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post 22.03.2016, 13:47:52
Post #9





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


No to w takim razie będę cierpliwie czekał na wczytanie danych wink.gif

Dam jakiś interwał i sprawdzanie czy wszystkie dane JSON wczytały się, a userowi dam spinnera, co sądzisz o takim rozwiązaniu?


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
nospor
post 22.03.2016, 13:51:51
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale czy ty czytasz co sie do ciebie pisze? THEN sie odpala po wczytaniu i juz. NIe musisz robic zadnych interwalow....

W przypadku AJAX przestan myslec staroswiecko LINI PO LINII. AJAX sie tak nie wykonuje. Po to wymyslono wiec THEN i on sie odpali po wykonaniu AJAX. ALe kod co miales poza THEN odpali sie duzo wczesniej. DLatego swojej rzeczy masz zrobic w THEN


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post 23.03.2016, 05:59:42
Post #11





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Dzięki za dogłębne wytłumaczenie problemu i naprowadzanie mnie mimo mojej upartości. Wstawiam moje rozwiązanie, może komuś się przyda.



To jest ładowarka JSONÓW i inicjalizacja strony
  1. $scope.loadFeed = function() {
  2.  
  3. factoryMinesData.getData().then(function(data){
  4. $scope.listOfMines = data[1];
  5.  
  6. return data;
  7. }).then(function(data){
  8. $scope.listDataMines = data[0];
  9.  
  10. return data;
  11. }).then(function(data){
  12. console.log($scope.listOfMines); // jest OK
  13. console.log($scope.listDataMines); // jest OK
  14.  
  15. $('#mydiv').hide();
  16. });
  17. }
  18.  
  19. $scope.loadFeed();


to jest SPINNER na stronie

  1. <div id="mydiv">
  2. <img src="assets/img/ajax-loader.gif" class="ajax-loader"/>
  3. </div>
  4.  
  5. #mydiv {
  6. position:absolute;
  7. top:0;
  8. left:0;
  9. width:100%;
  10. height:100%;
  11. z-index:1000;
  12. background-color:grey;
  13. opacity: .8;
  14. }
  15.  
  16. .ajax-loader {
  17. position: absolute;
  18. left: 50%;
  19. top: 50%;
  20. margin-left: -32px; /* -1 * image width / 2 */
  21. margin-top: -32px; /* -1 * image height / 2 */
  22. display: block;
  23. }


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 05:58