范围变量无法访问(未定义) - AngularJS

时间:2014-04-14 14:56:37

标签: javascript angularjs angularjs-scope single-page-application undefined-reference

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

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'。我做错了什么?

3 个答案:

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

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

AngularJS Service Passing Data Between Controllers