2016-10-01 6 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 вызывается ng-init контроллера под названием NameCtrl.

<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

Где вы вызова функции инициализации из? В чем находится угловое обслуживание/контроллер/директива? –

+0

@ Lironllayev его вызвал от ng-init, я добавил в вопрос. –

ответ

1

Как вы можете прочитать в угловой documentation for ngInit

(...) Есть только несколько соответствующих видов использования ngInit, такие как для наложения специальных свойств ngRepeat, как показано в демо ниже; и для ввода данных через серверные скрипты. Помимо этих случаев, вы должны использовать контроллеры вместо ngInit для инициализации значений в области.

Таким образом, вы предпочли бы поставить свою логику прямо в свой контроллер. И не должно быть никаких проблем с тем, чтобы вводить корневую область в контроллер.

1

$ rootScope в вашем примере - это аргумент. Как вы называете функцию init?

Из шаблона вы должны назвать его init($root)

+0

он работал нормально, используя $ root. –

Смежные вопросы