范围变量不可访问(未定义)-AngularJS

Scope variable not accessible (undefined) - AngularJS

本文关键字:未定义 -AngularJS 访问 变量 范围      更新时间:2023-09-26

我在一个控制器中设置一个范围变量,然后将位置更改为另一个视图。然后,在新视图的控制器中,范围变量不再可访问,它表示它是"未定义的"。我在下面添加了这个问题的简化版本,如果有任何帮助,我将不胜感激。

app.controller('loginController', function ($scope,$location){
   $scope.loginUser = function (user) {
       $scope.userId = "USERID";
       $location.path('/view3');
   }
});

视图3 控制器

app.controller('videoListController', function($scope){
alert("UserID: "+$scope.userId);               
});

$scope.userId的值显示为'undefined'。我做错了什么?

您也可以在AngularJS 中使用$rootScope进行全局访问

看看这个

app.controller('loginController', function ($scope,$rootScope,$location){
   $scope.loginUser = function (user) {
       $rootScope.userId = "USERID";
       $location.path('/view3');
   }
});
app.controller('videoListController', function($scope, $rootScope){
alert("UserID: "+$rootScope.userId);               
});

$scope不在控制器之间共享。如果需要在控制器之间传递数据,则需要将数据存储在其他持久的地方。

每个控制器定义范围。。。您仍然可以选择使用$scope.$parent$rootScope来链接控制器,但我会小心使用它们。

Angular Services是基于单例模式的。你也可以使用这些来在控制器之间共享信息,我认为这将是最好的方法。

我发现这之前已经讨论过了,这里有一些很好的例子:

AngularJS服务在控制器之间传递数据