2016-11-04 11 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スコープで検索しようとします。

関連する問題