我正在尝试访问父作用域,但是我收到了未定义作用域的错误。
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 :(得分: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
范围内搜索它。
答案 1 :(得分:1)
您无法访问该值的问题是parent-child
之间没有relationship
controllers
。
您可以通过多种方式访问它:
service
在控制器之间进行通信。$rootscope
,但不建议这样做。