Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.02.2017, 16:25
Новичок на форуме
Отправить личное сообщение для igor-js Посмотреть профиль Найти все сообщения от igor-js
 
Регистрация: 02.02.2017
Сообщений: 6

Получение контекста!
Добрый день!
У меня есть JSON файл
{
"Hello!" : "Привет!",
"Bye" : "Пока"
}

Есть код :
<html ng-app="app">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
    <script>
     
        var app = angular.module('app', []);

        app
                .controller('translateController', ['$scope', function ($scope, $http) {
                    $scope.msg = 'YES';
                    $scope.dictionary = {};
                    $http.get('translations.json').then(function (success) {

                        $scope.dictionary = success.data;
                    })
                }])
                .directive("translate", function () {
                    return {
                        restrict: "A",
                        template: function (el, attr) {
                            debugger;
                            var word = el.contents()[0];
                            
                            return dictionary[word];
//                            return word;

                        }
                    };
                });

    </script>
</head>
<body ng-controller="translateController">
<h1 translate >Hello!</h1>
</body>
</html>


Как мне привильно вернуть return dictionary[word] , чтобы вместо Hello! было Привет!.

Может кто подсказать как правильно написать?
Ответить с цитированием
  #2 (permalink)  
Старый 02.02.2017, 19:33
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

igor-js,
<html ng-app="app">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
</head>
<body ng-controller="translateController">
<h1 translate>Hello!</h1>
<script>
     
        var app = angular.module('app', []);

        app
                .controller('translateController', ['$scope', '$http', function ($scope, $http) {
                    $scope.msg = 'YES';
                    $scope.dictionary = {};
                    /*$http.get('translations.json').then(function (success) {
                        $scope.dictionary = success.data;
                    })*/
                    $scope.dictionary = {"Hello!" : "Привет!","Bye" : "Пока"}
                }])
                .directive("translate", function () {
                    return {
						compile: function(elem){
							var text = elem.text();
							elem.html('{{dictionary[text]}}')
							return function(scope){
								scope.text = text;
							}
						}
					}
                })
    </script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 02.02.2017, 20:57
Новичок на форуме
Отправить личное сообщение для igor-js Посмотреть профиль Найти все сообщения от igor-js
 
Регистрация: 02.02.2017
Сообщений: 6

Большое Вам спасибо! )
Как мне еще сделать так чтобы не было видно что было до того "Hello!", а сразу загружался переведенный текст. Потому что сейча маленькая задержка есть и всё видно.
Не знаете случайно?
Ответить с цитированием
  #4 (permalink)  
Старый 02.02.2017, 21:05
Новичок на форуме
Отправить личное сообщение для igor-js Посмотреть профиль Найти все сообщения от igor-js
 
Регистрация: 02.02.2017
Сообщений: 6

А если так загрузить будет ошибка (
<html ng-app="app" >
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
</head>
<body ng-controller="translateController">
<h1 translate>Hello!</h1>
<h1 translate>Bye</h1>
<script>

    var app = angular.module('app', []);

            app
            .controller('translateController', ['$scope', '$http', function ($scope, $http) {

               
              $scope.dictionary = {"Hello!" : "Привет!","Bye" : "Пока"}

            }])
            .directive("translate", function () {
                return {
                    compile: function (elem) {
                        var text = elem.text();
                        elem.html('{{dictionary[text]}}');

                        return function (scope) {
                            scope.text = text;
                        }
                    }
                }
            })
</script>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 02.02.2017, 21:13
Новичок на форуме
Отправить личное сообщение для igor-js Посмотреть профиль Найти все сообщения от igor-js
 
Регистрация: 02.02.2017
Сообщений: 6

Поставил scope= true и всё ок. Спасибо.
Ответить с цитированием
  #6 (permalink)  
Старый 02.02.2017, 22:26
Новичок на форуме
Отправить личное сообщение для igor-js Посмотреть профиль Найти все сообщения от igor-js
 
Регистрация: 02.02.2017
Сообщений: 6

А всё таки , как прорисовать один раз после получания запроса? А не перерисовывать заново?
Ответить с цитированием
  #7 (permalink)  
Старый 02.02.2017, 23:51
Новичок на форуме
Отправить личное сообщение для igor-js Посмотреть профиль Найти все сообщения от igor-js
 
Регистрация: 02.02.2017
Сообщений: 6

Добавил флаг!всё ок
Ответить с цитированием
  #8 (permalink)  
Старый 03.02.2017, 06:35
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Сообщение от igor-js Посмотреть сообщение
А всё таки , как прорисовать один раз после получания запроса? А не перерисовывать заново?
<html ng-app="app">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
</head>
<body ng-controller="translateController">
<h1 ng-cloak>{{dictionary['Hello!']}}</h1>
<h1 ng-cloak>{{dictionary['Bye']}}</h1>
<script>
     
        var app = angular.module('app', []);

        app
                .controller('translateController', ['$scope', '$http', function ($scope, $http) {
                    $scope.msg = 'YES';
                    $scope.dictionary = {};
                    /*$http.get('translations.json').then(function (success) {
                        $scope.dictionary = success.data;
                    })*/
                    $scope.dictionary = {"Hello!" : "Привет!","Bye" : "Пока"}
                }])
    </script>
</body>
</html>

Последний раз редактировалось destus, 03.02.2017 в 07:35.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение содержимого тега <a> toman Общие вопросы Javascript 4 31.10.2013 20:03
Получение страницы в переменную. FlyPROJet Общие вопросы Javascript 1 07.02.2013 08:57
Получение переменной из БД через ajax FoxTrix AJAX и COMET 3 15.11.2012 10:45
Переодическое получение ответа от сервера demoniqus AJAX и COMET 6 22.06.2010 16:09
Получение текстового содержимого из всех вложенных DOM EmDmAl Events/DOM/Window 8 02.12.2009 23:38