2014-10-02 3 views
1

У меня есть глобальная переменная, объявленная вне углового контекста:Как включить глобальные переменные в приложение angularjs?

var globalv = "Hello";

Эта переменная не изменяется. У меня есть директива, которая хочет использовать его ...

$scope.somevar = globalv + "_"; 

Что это самый простой способ, чтобы включить globalv в моем angularjs приложение/контекста? Когда я попытаюсь ссылаться на это выше, я получаю сообщение об ошибке.

ответ

2

Я хотел бы рассмотреть оберточное значение в угловом константе, которая позволит вам вводить его только там, где ее нужно

var myApp = angular.module('myApplication',[]); 
myApp.constant('myConstant', globalv); 

Просто убедитесь, что переменная globalv определяются, прежде чем ваш угловой модуль определен.

Мне нравится это лучше, чем использование корневой/глобальной переменной, так как вы можете контролировать, кто является потребителем этой ценности.

Вы можете вводить константу следующим образом:

mayApp.directive('myDirective',['myConstant', 
     function (myConstant) { 
      return { 
       .. 
     }; 
}]); 
+0

How может ли эта константа использоваться моя директива? Могу ли я просто использовать: $ scope.somevar = myConstant? – Rolando

+0

Добавлен пример – TGH

1

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

/* declare rootscope variables when the angular app starts*/ 
angular.module('someApp').run(function ($rootScope) { 
    $rootscope.globalv = "Hello"; 
}); 

Затем вы можете ссылаться на эту переменную корень в любом месте своего углового приложения.

Это довольно просто для меня, но я лично ненавижу использование $ rootScope, если только не нужно. Вы действительно должны попытаться уйти от глобальных переменных.

+0

У меня есть JS файл, включенный в мой index.html, который имеет все angular.module («someApp») ... Я хочу, чтобы впрыснуть globalv переменная на моей странице index.html (которая почти не содержит javascript). В вашем ответе имеет значение, существует ли этот тег скрипта с кодом до или после включения моего js-файла, который содержит начало приложения (угловой модуль ('someApp'))? – Rolando

+0

Если вы собираетесь использовать углы, я рекомендую поместить всю логику в ваш угловой код. Я не уверен, зачем вам нужна переменная в теге скрипта вне вашего углового кода. –

Смежные вопросы