我在一个控制器中设置范围变量,然后将位置更改为另一个视图。然后在新视图的控制器中,不再可以访问范围变量,它声明它是“未定义的”。 我在下面添加了问题的简化版本,非常感谢任何帮助。
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
'。我做错了什么?
答案 0 :(得分:4)
您还可以在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);
});
答案 1 :(得分:2)
$scope
。如果需要在控制器之间传递数据,则需要将其存储在其他持久性的地方。
答案 2 :(得分:1)
范围是根据控制器定义的......您仍然可以选择使用$scope.$parent
或$rootScope
链接控制器,但我会仔细使用它们。
Angular Services基于单身模式。您也可以使用它们在控制器之间共享信息,我认为这将是最好的方法。
我发现之前已经讨论过,这里有一些很好的例子: