2015-11-04 75 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