如何在没有$ scope的情况下访问父控制器中的变量?

时间:2016-11-30 15:11:52

标签: angularjs scope controller

我正在使用angularjs编写应用程序,但我不知道如何访问主控制器中的变量。

gsg_main.controller('mainCtrl',['$scope','SessionService','$http','$routeParams','MessageService','$interval','$location','orderByFilter',function($scope,SessionService,$http,$routeParams,MessageService,$interval,$location,orderBy){
//variablen
var self = this;
self.username = "any_name";

我想从嵌套控制器访问用户名:

gsg_main.controller('testCtrl',['$scope',function($scope){
var self = this;
self.testvar = $scope.$parent.username;

}]);

我也尝试过:

self.testvar = $scope.$parent.parent.username;

我在其他帖子中找到了。

有没有办法在主控制器中不使用$ scope?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

创建服务:

  .service('UsernameService', function() {
    var username = null;

    this.setUsername = function(value) {
      username = value;
    };

    this.getUsername = function() {
      return username;
    }
  })

将其注入控制器:

  .controller('mainCtrl', ['$scope', 'UsernameService', function($scope, UsernameService) { ... }

然后,您可以调用这些函数来获取和设置用户名值:

 UsernameService.setUsername("any_name");
 ...
 self.testvar = UsernameService.getUsername();