3

1) У меня есть переменные инициализируются в нг-инициализации Eg -AngularJS - Доступ к нг-инициализации переменных из метода выполнения

ng-init="password='Mightybear'"; 

2) Я хочу, чтобы получить доступ к нему из метода .run. Например -

anguar.module("ngApp", []) 
.run(function() { 
//Access password here 
}); 

Ниже сценарии я пытался, так и не получилось -

1) angular.module("ngApp", []) 
.run(function($rootScope) { 
console.log($rootScope.password) //undefined!!! 
}); 

2) angular.module("ngApp", []) 
.run(function($rootScope, $timeout) { 
$(timeout(function() { 
console.log($rootScope.password) //undefined!!! 
}); 
}); 

ответ

3

Вы не можете получить нг-инициализации значение внутри run блока

Угловая LifeCycle

  1. Config Phase (app.config) ($ rootScope не будет доступна здесь)
  2. Run Phase (приложение .run) ($ rootScope будет доступен здесь)
  3. Директива получает компиляцию()
  4. Затем выполняется управление, функция директивной ссылки, фильтр и т. д. (ng-init is here)

Если вы хотите получить значение инициализации в фазе запуска, вам необходимо установить это значение в фазе конфигурации.

Если Вы хотите установить значение в конфигурации, то вы можете принять использование app.constant/provider, которые доступны на этапе конфигурации, не используйте $rootScope, который считается плохой шаблон в AngularJS.

Код

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

app.constant('settings', { 
    title: 'My Title' 
}) 

app.config(function(settings) { 
    setting.title = 'Changed My Title'; 
    //here can you do other configurarion setting like route & init some variable 
}) 

app.run(function(settings) { 
    console.log(settings.title); 
}) 
+0

Является ли app.contant альтернативой глобальным переменным? или это глобальные переменные для углового приложения? –

+0

app.constant - это не глобальная переменная. Вы можете рассматривать ее как один из видов factory..which может содержать статические данные. –

+0

Мне нужно использовать его только из ng-init и .run. есть идеи? Могу ли я добавить часы на корнеплод? –

0

Я дам вам пошаговое руководство, о том, как угловые нагрузки

угловой модуль ---> .config ----> .run ----> контроллеры (ng-init)

Теперь вы можете очистить свой подход.

+0

Am новый угловому. Я предполагаю использовать $ watch. $ RootScope. $ Смотреть? –