2015-11-04 73 views
0

我有一个初始化的全局变量中的所有功能,使用上的一些myController的问题:与NG-init和NG-控制器发行

以下是我迄今所做的:

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

谢谢

+0

的tablename = $ scope.tableName; ?这是什么代码?请解释 –

+0

加载控制器后调用ng-init。所以肯定会'首先调用'allert 2'。 – AntiHeadshot

+0

对不起,我会做一个片段 – ben

回答

1

因为控制器最初加载为未定义你的初始化函数得到歌厅变量之后调用,你能做的就是

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

UPDATE:

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

另一种选择是使用$ rootScope,

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

然后你就可以使用任何控制器访问$rootScope.tableName

+0

这不是简单的警报,我没有解释这么多..我想做一个变量'$ scope.tableName'在所有控制器功能中可用 – ben

+0

检查更新的答案 – Sajeetharan

+0

我想使用相同的变量控制器,但在所有的功能..我已经尝试了rootcope,但它不工作@sajeetharan – ben