我在初始化全局变量以在mycontroller的所有函数中使用时遇到一些问题:

到目前为止,这是我所做的:

JS:

$scope.init = function (table) {
    alert("alert 1 : " + table);
    $scope.tableName = table;
    alert($scope.tableName);
};

tableName = $scope.tableName;
alert("alert 2 : " + tableName);


HTML:

<div ng-init="init('RIGHTTABLE')" ng-controller="DropdownCaptionCtrl">


我的浏览器上有以下命令的警报:


  警报2:未定义
  
  警报1:RIGHTTABLE


您有解决此问题的想法吗?

我想要的是按此顺序发送警报:


  警报1:RIGHTTABLE
  
  警报2:RIGHTTABLE


实际上,我想在所有控制器功能中使用全局变量$scope.tableName,我想在页面启动时对其进行初始化

Codepen here

谢谢

最佳答案

由于控制器最初已加载,因此在获取未定义的变量后将调用您的init函数,您可以做的是

$scope.init = function (table) {
    alert("alert 1 : " + table);
    $scope.tableName = table;
    alert($scope.tableName);
    alert("alert 2 : " + $scope.tableName);
};


更新:

如果要在所有控制器中使用变量,请使用Service

其他选择是使用$ rootScope,

   $scope.init = function (table) {
        alert("alert 1 : " + table);
        $rootScope.tableName = table;
        alert($rootScope.tableName);
        alert("alert 2 : " + $rootScope.tableName);
    };


然后,您将可以使用$rootScope.tableName在任何控制器中进行访问

09-25 19:27