AngularJS переменная доступна из всего кода - PullRequest
0 голосов
/ 19 марта 2020

, как вы можете видеть, я открыл. xml файл и проанализировал его в xmlDo c. Я пытаюсь добиться того, чтобы этот xmlDo c был доступен из всего скрипта (позже я хочу сделать некоторые функции, которые будут отображать элементы из. xml на экран). Я искал в Интернете и обнаружил, что это возможно с помощью глобальной переменной $ rootScope, но не смог правильно ее реализовать. Я надеюсь, что вы, ребята, можете мне помочь. Спасибо.

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body ng-app="myApp">
    <p id="title">asd</p>
    <button name="opt1" ng-click="">YES</button>
    <button name="opt2" ng-click="">NO</button>

<script>

var app = angular.module('myApp', []);
var parser, xmlDoc;
app.run(function($rootScope, $http) {
    text = $http.get("file.xml").then(function(response) {
        return response.data;
    }).then(function(text) {
        parser = new DOMParser();
        xmlDoc = parser.parseFromString(text,"text/xml");
        document.getElementById("title").innerHTML = 
        xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
    });
});

</script>
</body>
</html>

1 Ответ

0 голосов
/ 19 марта 2020

В angular есть много способов объявить и использовать глобальную переменную. Примеры: 1. Используя $ rootScope. нам нужно добавить зависимость в нашем контроллере или сервисе, например:

app.controller('myCtrl', ['$rootScope', '$scope', function($rootScope, $scope){
      $rootScope.yourVar = 'YourValue';
      ....
      ....
   }]);

and then You can use this `yourVar` variable anywhere in your code.

Другой способ - использовать angular factory or servive.

app.factory('factoryObj', ['$scope', function($scope){
    let factoryObj.yourVar = 'yourValue';

    return factoryObj;
 }]);

Теперь в любом контроллере или любом другом сервисе: используя factoryObj в качестве зависимости, а затем внутри этого контроллера или службы мы можем использовать factoryObj.yourVar в качестве переменной. как:

app.controller('myCtrl',['$rootScope','$scope','factoryObj'function($rootScope,$scope, factoryObj){

  console.log('factoryObj.yourVar value: ',factoryObj.yourVar);

}]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...