Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2016, 00:22
Интересующийся
Отправить личное сообщение для scorpion95 Посмотреть профиль Найти все сообщения от scorpion95
 
Регистрация: 01.08.2015
Сообщений: 24

Обратиться к свойству $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, так оно все тут мудрено ...
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2016, 03:41
Кандидат Javascript-наук
Отправить личное сообщение для yazonnile Посмотреть профиль Найти все сообщения от yazonnile
 
Регистрация: 25.05.2012
Сообщений: 133

Вы вызываете консоль до того как запишется свойство локализации
Там ведь асинхронщина
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2016, 00:56
Новичок на форуме
Отправить личное сообщение для kaang Посмотреть профиль Найти все сообщения от kaang
 
Регистрация: 11.11.2015
Сообщений: 6

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

$scope.$watch('localization', function() {
   console.log($scope.localization);
});
Ответить с цитированием
  #4 (permalink)  
Старый 15.02.2016, 07:25
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Ты почти пришел к успеху
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-файле может ВНЕЗАПНО быть одноименная функция\переменная
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обратиться к свойству объекта через его название ruzik Общие вопросы Javascript 2 11.04.2014 22:58
Обратиться к свойству или методу parent из child simple Общие вопросы Javascript 6 02.03.2013 00:10
Как обратиться к свойству CSS через JS? Дмитрий 87 Events/DOM/Window 4 14.12.2012 16:56
Обратиться к псевдоэлементу CSS :after bookin jQuery 4 05.07.2012 14:46
Как обратиться к свойству объекта по имени если оно хранится в переменной xaknik Общие вопросы Javascript 2 25.04.2012 23:12