簡體   English   中英

ng-init 在 angularjs controller 末尾觸發 function

[英]ng-init trigger a function at end of angularjs controller

我想將用戶名和 ID 從 php 登錄頁面傳遞到 angularjs controller onload。 我嘗試通過 ng-init 調用 basicDetails(username, id)。 這個 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>

主控制器.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);

}]);

如您所說, ng-init在 controller 代碼的 rest 之后運行。 這就是為什么當您嘗試在basicDetails之外記錄它時會得到undefined的原因。 它尚未設置,因為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);    
  }
}}

您可以將其從basicDetails重命名為類似init的名稱,這樣更有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM