Чтение значения угловой переменной из атрибута DOM

#javascript #angularjs #variables #scope

#javascript #angularjs #переменные #область видимости

Вопрос:

Я присваиваю классу переменную Angular и пытаюсь работать с ее фактическим значением в Javascript, но, похоже, я не могу правильно отобразить его и получить вместо него формат Angular {{}} . Здесь, в этой ссылке jsFiddle, я пытаюсь отобразить ее следующим образом:

 <script> var test = angular.element(document.getElementById("test"))[0]; 
         alert(test.className);   </script>
  

Хотя в консоли.регистрируйте, что значение класса отображается правильно, если я попытаюсь работать с ним в JS, я, кажется, получаю неразрешенный угловой формат вместо значения «en», как определено ниже:

 function LoginController($scope) {
    $scope.site = {
        language: "en"
    };

    $scope.display = function (text) {
        alert(text);
    };
}
  

Я видел, что в большинстве вопросов, касающихся передачи угловых переменных в JS, упоминается атрибут ng-click, но в моем случае это кажется неуместным.
Следовательно, я был бы признателен за любую информацию об этом. Заранее благодарю.

Комментарии:

1. почему вы пытаетесь сделать это таким образом? установлены угловые двухсторонние привязки, так что вам не нужно рыться в документе, чтобы найти значения. Похоже, вы пытаетесь избежать использования angular здесь, что не имеет смысла.

2. и для записи, это именно правильное поведение для написанного кода. Выполняется <script> при загрузке страницы, до того, как angular выполнит какой-либо синтаксический анализ DOM. «Передача переменных Angular в JS» даже не имеет никакого смысла, поскольку Angular — это фреймворк, написанный на JS, это не конкурирующий язык.

3. Спасибо за ваш быстрый ответ. Ну, это всего лишь упрощенный сценарий, реальная проблема немного сложнее. Главное что у меня есть встроенная библиотека JS, которая принимает в качестве параметра язык (например <script data-languge=»en» />) and returns a DOM object based on it. К сожалению, этот языковой параметр определен как угловая переменная, поэтому я пытаюсь найти обходной путь.

4. Недостаточно известно об источнике языка, если это не en

5. на самом деле это не то, для чего вы можете использовать angular; как я уже говорил ранее, эти <script> теги будут выполняться до того, как angular получит возможность начальной загрузки. Если использование angular является единственным способом определения этого свойства, вам придется встроить загрузку скрипта в директиву, которая запускается после начальной загрузки angular.