繁体   English   中英

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

[英]Scope variable not accessible (undefined) - AngularJS

我在一个控制器中设置一个范围变量,然后将位置更改为另一个视图。 然后在新视图的控制器中,范围变量不再可访问,它声明它是“未定义”。 我在下面添加了问题的简化版本,并希望得到任何帮助。

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 服务基于单例模式。 您还可以使用它们在控制器之间共享信息,我认为这将是最好的方法。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM