Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AngularJS - Accessing ng-init variables from run method

1) I have variables initialized in ng-init Eg -

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

2) I want to access it from the .run method. Eg -

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

Below scenarios I have tried, and did not work -

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!!!
});
});
like image 661
gopal rao Avatar asked Jun 26 '26 05:06

gopal rao


1 Answers

You can not get ng-init value inside your run block

Angular LifeCycle

  1. Config Phase (app.config) ($rootScope will not available here)
  2. Run Phase (app.run) ($rootScope will available here)
  3. Directive Gets Compile()
  4. Then controller, directive link function, filter, etc gets executed.(ng-init is here)

If you want to get initialize value in run phase then you need to set that value in config phase.

If You want to set the value in config then you can take use of app.constant/provider which available in configuration phase, don't use $rootScope that is considered as bad pattern in AngularJS.

Code

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);
})
like image 54
Pankaj Parkar Avatar answered Jun 28 '26 22:06

Pankaj Parkar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!