ng-init和ng-controller问题

时间:2015-11-04 10:29:42

标签: javascript angularjs

我在初始化一个全局变量时会遇到一些问题,以便在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

谢谢

1 个答案:

答案 0 :(得分:1)

由于控制器最初被加载,因此在将变量设置为未定义之后会调用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

访问任何控制器