2016-11-04 3 views
0

부모 범위에 액세스하려고하는데 범위가 정의되지 않았다고 오류가 발생합니다.AngularJs : 부모 범위에 액세스하고 범위를 정의하지 않았습니다.

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

'ng-controller'가있는 html 코드를 추가하십시오. – rakemen

+1

코드에 아무것도 표시되지 않는 이유는 무엇입니까? – devqon

+0

여기에 자녀 - 부모 관계가 표시되지 않습니다. 형제입니다. – misher

답변

1

값에 액세스 할 수없는 문제는 controllers 사이에 parent-childrelationship이 없기 때문에 발생합니다.

당신은 그것을 액세스 할 수있는 여러 가지 방법

  1. 중 하나 service를 사용하여 컨트롤러간에 통신 할 수.
  2. emit/broadcast를 사용하여 통신하기
  3. $rootscope을 사용하십시오. 그러나 권장하지 않습니다.
1

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

같은 뭔가를 그리고 당신은 무엇을 컨트롤러 부모 범위 $scope.test 변수를 찾기 위해 당신은 여기에 (적어도)도보기를 게시해야하지만, 나는 당신의 HTML로 가정합니다. 당신은 당신의 아이 컨트롤러를 사용 .title($scope.Data.test)에 그런

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

와 부모 컨트롤러 변화 $scope.test = "Test";에서 angularjs scope inheritance이 방법

를 사용하려고 할 수 있습니다.
자식 컨트롤러는 $scope.Data 개체에 액세스하려고 시도하지만 현재 범위에 존재하지 않으므로 찾을 수있는 $parent 범위에서 검색하려고 시도합니다.

관련 문제