Доступ к глобальным переменным через консоль в angularjs [дубликат]

Помимо всех (хорошо объясненных) ответов, не было упомянутых ниже, и я часто посещаю этот Q & amp; A.

В двух словах; MySQL думает, что вы хотите сделать математику в своей таблице / столбце и интерпретируете дефисы, такие как «электронная почта», как e минус mail.


Отказ от ответственности: Поэтому я думал, что добавлю это как ответ типа «FYI» для тех, кто совершенно не знаком с работой с базами данных, и которые могут не понимать уже описанные технические термины.

51
задан FRECIA 27 December 2013 в 19:01
поделиться

3 ответа

Я создал рабочий пример CodePen , демонстрирующий, как это сделать правильно в AngularJS. Для доступа к любым глобальным объектам следует использовать функцию углового $ window , поскольку прямой доступ к window затрудняет тестирование.

HTML:

<section ng-app="myapp" ng-controller="MainCtrl">
  Value of global variable read by AngularJS: {{variable1}}
</section>

JavaScript:

// global variable outside angular
var variable1 = true;

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

app.controller('MainCtrl', ['$scope', '$window', function($scope, $window) {
  $scope.variable1 = $window.variable1;
}]);
91
ответ дан Adam Thomas 31 August 2018 в 11:51
поделиться

Скопируйте глобальную переменную в переменную в области вашего контроллера.

function MyCtrl($scope) {
   $scope.variable1 = variable1;
}

Затем вы можете просто получить к ней доступ, как вы пробовали. Но учтите, что эта переменная не изменится при изменении глобальной переменной. Если вам это нужно, вы можете вместо этого использовать глобальный объект и «скопировать». Поскольку он будет «скопирован» по ссылке, он будет тем же самым объектом, и, следовательно, будут применены изменения (но помните, что для работы вне AngularJS вам потребуется сделать $ scope. $ Apply inway).

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

12
ответ дан Juliane Holzt 31 August 2018 в 11:51
поделиться

Я пробовал эти методы и обнаружил, что они не работают для моих нужд. В моем случае мне нужно было вставить обработанную роль json-сервера в основной шаблон страницы, поэтому, когда он загружается и угловат, данные уже есть и не нужно извлекать (большой набор данных).

Самое легкое решение, которое я нашел, состоит в том, чтобы сделать следующее:

В вашем угловом коде вне приложения, определения модулей и контроллеров добавляют глобальное значение javascript - это определение ДОЛЖНО

Пример:

'use strict';

//my data variable that I need access to.
var data = null;

angular.module('sample', [])

Затем в вашем контроллере:

.controller('SampleApp', function ($scope, $location) {

$scope.availableList = [];

$scope.init = function () {
    $scope.availableList = data;
}

Наконец, вы должны все инициализировать ( порядок]:

  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
  <script src="/path/to/your/angular/js/sample.js"></script>
  <script type="text/javascript">
      data = <?= json_encode($cproducts); ?>
  </script>

Наконец, инициализируйте ваш контроллер и функцию init.

  <div ng-app="samplerrelations" ng-controller="SamplerApp" ng-init="init();">

Делая это, вы теперь получите доступ к любым данным, которые вы вбили в глобальную переменную.

1
ответ дан MediaGiantDesign 31 August 2018 в 11:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: