[英]ng-init trigger a function at end of angularjs controller
I want to pass user name and id from php login page to angularjs controller onload.我想将用户名和 ID 从 php 登录页面传递到 angularjs controller onload。 i tried it by ng-init to call basicDetails(username, id).我尝试通过 ng-init 调用 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这个 function 在主 controller 的末尾触发。还有另一个问题将参数传递给 angularjs 变量打印在 basicDetails function 内部传递的值,外部它显示值为空
<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主控制器.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-init
runs after the rest of the controller code.如您所说, ng-init
在 controller 代码的 rest 之后运行。 This is why you get undefined
when you try to log it outside of basicDetails
.这就是为什么当您尝试在basicDetails
之外记录它时会得到undefined
的原因。 It hasn't been set yet because basicDetails
sets it later.它尚未设置,因为basicDetails
设置它。
So run all of your initialization code inside of basicDetails
:因此,在basicDetails
中运行所有初始化代码:
templeApp.controller('mainController'...
$scope.basicDetails = function(logedUser, itmsNo) {
$rootScope.loggedUser;
$scope.itmsNo;
$rootScope.loggedUser = logedUser;
$scope.itmsNo = itmsNo;
console.log($scope.loggedUser);
$scope.user = webService.userData('impl/userData.php', $scope.loggedUser);
}
}}
You can rename it from basicDetails
to something like init
so it makes more sense.您可以将其从basicDetails
重命名为类似init
的名称,这样更有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.