2016-11-04 177 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

添加html代碼,其中'ng-controller'存在。 – rakemen

+1

我沒有看到你的代碼中的任何東西爲什麼你會期望有一個父範圍 – devqon

+0

我沒有在這裏看到子 - 父關係,他們是兄弟姐妹 – misher

回答

1

您無法訪問該值的問題是您的controllers之間沒有parent-childrelationship

您可以訪問多種方式:

  1. 或者使用一個service到控制器之間的通信。
  2. 使用發射/廣播進行通信
  3. 使用$rootscope,但不推薦使用。
1

你應該已經在這裏(至少)還貼出你的觀點,但我在你的HTML假設你有這樣的事情

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

而且你看你的控制器,在父範圍$scope.test變量。你可以嘗試在你的孩子控制器配合使用.title($scope.Data.test)使用angularjs scope inheritance這樣

在家長控制人變更情況$scope.test = "Test";

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

然後。
子控制器將嘗試訪問$scope.Data對象,但它不存在於當前作用域中,因此它將嘗試在$parent範圍內搜索它,以找到它。