2016-10-01 54 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可以正常工作。 –