Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Обратиться к свойству $scope в контроллере (https://javascript.ru/forum/angular/60599-obratitsya-k-svojjstvu-%24scope-v-kontrollere.html)

scorpion95 10.01.2016 00:22

Обратиться к свойству $scope в контроллере
 
var module = angular.module("game", []);

module.controller("gameCtrl", function($scope, $http) {
	getLocalization("RU", $http, $scope);
	console.log($scope.localization);
});

function getLocalization(lang, http, score) {
	var lang_json;
	var data;
	
	switch (lang) {
		case "RU":
			lang_json = "/json?file=ru_lang.json";
			break;
	}
	
	http({
		method: "GET",
		url: lang_json
	}).then(function successCallback(response) {
		score.localization = response.data;
	}, function errorCallback(response) {
		console.log(response);
	});
}


В общем, проблема такова, что когда я в консоль-лог кидаю $scope.localization, то вижу undefined, а когда просто $scope, то вижу объект, в котором есть свойство localization, куда все успешно записалось.

Почему так и как мне обратиться правильно к $scope.localization?


P.S. очень непривычно изучать Angular после jQuery, так оно все тут мудрено ...

yazonnile 10.01.2016 03:41

Вы вызываете консоль до того как запишется свойство локализации
Там ведь асинхронщина

kaang 13.02.2016 00:56

Данные в localization загружаются асинхронно, потому в консольничего не выводится, так как в момент вызова консоли данных еще нет. Можно обновить данные после успешной загрузки и тогда они будут видны.

$scope.$watch('localization', function() {
   console.log($scope.localization);
});

krasovsky 15.02.2016 07:25

Ты почти пришел к успеху
var module = angular.module("game", []);
 
module.controller("gameCtrl", function($scope, $http) {

    getLocalization("RU").then(function successCallback(response) {
        score.localization = response.data;
    }, function errorCallback(response) {
        console.log(response);
    });

function getLocalization(lang, http, score) {
    var lang_json;
    var data;
     
    switch (lang) {
        case "RU":
            lang_json = "/json?file=ru_lang.json";
            break;
    }
     
    return http({
        method: "GET",
        url: lang_json
    });
}
});


+ выносить функцию за модуль не стоит, т.к. в другом твоем js-файле может ВНЕЗАПНО быть одноименная функция\переменная


Часовой пояс GMT +3, время: 08:49.