2

在下面的代码中,我登录到控制台 $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>
4

2 回答 2

1

正如您可以在ngInit 的角度文档中阅读的那样

(...) ngInit 只有少数合适的用途,例如用于别名 ngRepeat 的特殊属性,如下面的演示所示;以及通过服务器端脚本注入数据。除了这几种情况,您应该使用控制器而不是 ngInit 来初始化作用域上的值。

所以你宁愿把你的逻辑直接放到你的控制器中。并且将根范围注入控制器应该没有任何问题。

于 2016-10-01T19:28:52.523 回答
1

您的示例中的 $rootScope 是一个参数。你如何调用初始化函数?

从模板你应该调用它init($root)

于 2016-10-01T19:57:31.333 回答