2016-10-01 58 views
2

在下面的代碼中,我登錄來控制$ rootScope並且它的日誌未定義。 爲什麼會發生?Rootscope無法在功能中訪問

$scope.init = function ($rootScope) { 
    // var s = $cookies.get("arr"); 
    // var ex = []; 

    var ex = $cookies.get("arr"); 
    $scope.arry = JSON.parse(ex); 
    alert("scooe.arry" + $scope.arry); 
    console.log("JSON.stringify($cookies.get('arr'))=" + $scope.arry); 

    //create a call to google api for all stocks in the $scope.arry 
    $scope.arry.forEach(function(entry) { 
     console.log("entry is " + entry); 
     var v = httpcall.getVal(entry); 
     $scope.arry.push(v); 
     //console.log("rootscoooope =" + $rootScope.share + "=="); 
     console.log($rootScope); debugger; 
    }); 

init函數由名爲NameCtrl的控制器的ng-init調用。

<ul> 
    <li ng-repeat="sr in arry track by $index"> value : {{sr.l_cur}} 
     <a href='#' onhover="remove" ng-click="removename(sr)"> (-)</a> 
    </li> 
</ul> 
+1

你在哪裏調用init函數?在什麼角度的服務/控制器/指令位於? –

+0

@Lironllayev它從ng-init中調用,我加入了問題。 –

回答

1

正如你在閱讀的角度documentation for ngInit

(...)有ngInit的只有幾個合適的用途,例如 作爲別名ngRepeat的特殊性能,如可見下面演示 ;並通過服務器端腳本注入數據。除了這些情況外,您應該使用控制器而不是ngInit來初始化作用域上的 值。

所以你寧願把你的邏輯直接放到你的控制器中。將根作用域注入控制器應該沒有任何問題。

1

$您的示例中的$ rootScope是一個參數。你如何調用init函數?

從模板你應該叫它init($root)

+0

它使用$ root可以正常工作。 –