Показать сообщение отдельно
  #1 (permalink)  
Старый 07.08.2015, 13:35
Новичок на форуме
Отправить личное сообщение для KELeborn Посмотреть профиль Найти все сообщения от KELeborn
 
Регистрация: 07.08.2015
Сообщений: 4

HELP!: Scope+Route - Dynamical Content+Variables
Ситуация: Здравствуйте, делаю веб-приложение где используеться несколько языков, а также "Роутер". Роутер и мулти-язычность реализованы с помощью AngularJS. НО! есть 1 проблема, только вот начал изучать Англярку, и еще плохо разбираюсь в ее логике.
Нужно: чтобы приложение работало с роутером (подгружало динамически контент - удобно быстро и "дешевле"), а также когда я меняю язык (подгружается языковый файл .json, и сохраняеться в storage), чтобы переводило текст интерфейса. Все это реализовано, НО -
Проблема:
1) когда загружеться страница с роутера, то надо отдельно вызывать "перевод" scope, точнее инициалзация (расчеты и прорисовка) контента:
$scope.$on('$viewContentLoaded', function($routeParams) {
	paint();
});

= хотелось бы чтобы переводило автоматом (вставляло значение переменных)
2) и САМОЕ ВАЖНОЕ - когда меняю язык, подгружаеться файл языка, сохраняется в storage (или indexedBD), изменяеться переменная, и... переводит ТОЛЬКО стационарный контент! Динамическую часть (ng-view) не переводит!!! Не знаю как заставить ее переводить.
function translate(){
	console.log("translate");
	var appElement = document.querySelector('[ng-controller="TranslateController"]'),
			$scope = angular.element(appElement).scope();
		$scope.$apply(function() {
			$scope.ml = Lang.text;
			$scope.ml.code = Lang.code;
			$scope.ml.name = Lang.name;
			$scope.ml.version = Lang.version;
			$scope.ml.langs = [];
			for(var lang in version.Lang){
				if(lang != $scope.ml.code){
					version.Lang[lang].code = lang;
					$scope.ml.langs.push(version.Lang[lang]);
				};
			};
		});
	return true;
};

Просьба: Помогите пожалуйста разобраться!

З.Ы. Инициализация "Роутера":
function APP_INIT(){
	console.log("\n| APP_INIT");
	//Router
	var app = angular.module('multiLang', ['ngRoute']);
	app.config( function ($routeProvider) {
		$routeProvider
			.when("/",{
					controller : "TranslateController",
					templateUrl : "views/index.html"
			})
			.when("/about",{
					controller : "TranslateController",
					templateUrl : "views/about.html"
			})
			.when("/donate",{
					controller : "TranslateController",
					templateUrl : "views/donate.html"
			})
			.when("/feedback",{
					//controller : "TranslateController",
					templateUrl : "views/feedback.html"
			})
			.otherwise({redirectTo : "/"});
	});
	app.controller('TranslateController', function ml($scope, $routeParams){
		$scope.ml = Lang.text;
		$scope.$on('$viewContentLoaded', function($routeParams) {
			paint();
			//$route.reload();
			//translate();
		});
	});

	console.log("online^: ", online())
	online() 
		? ONLINE_MODE() 
		: OFFLINE_MODE()
};

Последний раз редактировалось KELeborn, 07.08.2015 в 13:39. Причина: ошибка
Ответить с цитированием