I want to pass user name and id from php login page to angularjs controller onload . i tried it by ng-init to call basicDetails(username, id) . this function trigger at end of main controller. and also another problem passed parameter to angularjs variable print passed value in inside basicDetails function , outside it shows value as empty
<body ng-controller="mainController" ng-init="basicDetails('<?php echo$_SESSION["username"];?> ','<?php echo$_SESSION["itmsNo"];?> ')">
<center>
<div >
<b><?php echo htmlspecialchars($_SESSION["username"]); ?></b><br>
<a href="reset-password.php" class="btn btn-warning">Reset Password</a><br>
<a href="logout.php" class="btn btn-danger">Sign Out</a>
</div> </center>
<!-- Main div showing different templates loaded by ng-view directive -->
<div class="container main" ng-view>
</div>
Maincontroller.js
templeApp.controller('mainController', ['$scope','$rootScope','$http','webService', function($scope,$rootScope, $http,webService,user) {
$rootScope.loggedUser;
$scope.itmsNo;
// This function trigger by ng-init , but called end of main controller
$scope.basicDetails = function(logedUser,itmsNo){
$rootScope.loggedUser =logedUser;
$scope.itmsNo =itmsNo;
console.log($scope.loggedUser ); // console print actual value
}
console.log('..'+$scope.loggedUser ); // console print empty value
$scope.user = webService.userData('impl/userData.php',$scope.loggedUser);
}]);
As you said,
ng-initruns after the rest of the controller code. This is why you getundefinedwhen you try to log it outside ofbasicDetails. It hasn't been set yet becausebasicDetailssets it later.So run all of your initialization code inside of
basicDetails:You can rename it from
basicDetailsto something likeinitso it makes more sense.