2016-11-04 3 views
0

Я пытаюсь получить доступ к родительской области, но я получаю ошибку, что область неопределенности.AngularJs: Доступ к родительской области, и я получаю Scope undefined

MyApp.controller('AdminController', function ($scope, $http, $filter, $mdDialog, $window, $location, $mdToast) { 

$scope.test = "Test"; 

}). 
controller('ToastCtrl', function($scope, $mdToast, $mdDialog) { 
    $scope.openMoreInfo = function(e) { 
     if (isDlgOpen) return; 
     isDlgOpen = true; 

     $mdDialog 
      .show($mdDialog 
      .alert() 
      .title($scope.$parent.test) 
      .targetEvent(e) 
     ) 
      .then(function() { 
       isDlgOpen = false; 
      }) 
    }; 
}); 

Любое предложение, почему я получаю эту ошибку.

Заранее спасибо.

+0

Добавить html-код, в котором присутствует 'ng-controller'. – rakemen

+1

Я ничего не вижу в вашем коде, почему вы ожидаете наличия родительской области – devqon

+0

Я не вижу отношения между родителями и родителями, они являются братьями и сестрами – misher

ответ

1

Проблема, с которой вы не можете получить доступ к значению, не существует parent-childrelationship между вашим controllers.

Вы можете получить доступ к нему несколькими способами:

  1. Либо используя service для обмена данными между контроллерами.
  2. Использование emit/broadcast для связи
  3. Используйте $rootscope, но его не рекомендуется.
1

Вы должны быть размещены также Ваше мнение здесь (по крайней мере), но я предполагаю, что в вашем HTML у вас есть что-то вроде этого

<div ng-controller="AdminController"> 
    <div ng-controller="ToastCtrl"> 
     <!-- openMoreInfo called somewhere here --> 
    </div> 
</div> 

И вы, что ваш контроллер искать $scope.test переменной в родительской области. Вы можете просто попытаться использовать angularjs scope inheritance этот путь

В родительском изменения контроллера $scope.test = "Test"; с

$scope.Data = {}; 
$scope.Data.test = "Test"; 

Затем в детском использовании контроллера .title($scope.Data.test).
Детский контроллер попытается получить доступ к объекту $scope.Data, но он не существует в текущей области, поэтому он попытается найти его в области $parent, где он может быть найден.

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