关于 javascript:Angularjs 仅在根状态下读取 $scope

Angularjs read $scope in only root state

我正在使用 ionicangularjs

我的应用程序。

1
2
3
4
5
6
7
8
9
10
11
.state('auth', {
  url: '/auth',
  abstract:true,
  templateUrl: 'templates/auth.html',
  controller: 'authCtrl'
})
.state('auth.reg', {
  url: '/reg',
  templateUrl: 'templates/register.html',
  controller: 'regCtrl'
});

我的 auth.html(根视图)中有这个:

1
{{authHeader}}

我的controller.js

1
2
3
4
5
6
7
8
9
10
.controller('authCtrl', function($scope, $stateParams) {
  // here can get the scope
  // $scope.authHeader ="register";
})


.controller('regCtrl', function($scope, $stateParams) {
  // here CAN NOT get the scope
  $scope.authHeader ="register";
});

只有在根控制器中我才能得到 $scope。我想添加另一个名为 login 的控制器,然后将其更改为登录。有什么想法吗?


您可以为此目的使用 $rootScope

1
2
3
4
.controller('authCtrl', function($scope, $rootScope, $stateParams) {
  // here can get the scope
  // $rootScope.authHeader ="register";
})

并且在 reg:

1
2
3
4
.controller('regCtrl', function($scope, $rootScope, $stateParams) {
  // here CAN NOT get the scope
  $rootScope.authHeader ="register";
});

您可以为此目的使用 $rootScope

1
2
3
4
.controller('authCtrl', function($scope, $rootScope, $stateParams) {
  // here can get the scope
  // $rootScope.headerData.authHeader ="register";
})

并且在 reg:

1
2
3
4
.controller('regCtrl', function($scope, $rootScope, $stateParams) {
  // here CAN NOT get the scope
  $rootScope.headerData = {authHeader :"register"};
});

在你的模型中请使用 -

1
{{headerData.authHeader}}

当控制器改变时它总是会更新。


尝试引入一个模型(引用对象)

1
$scope.Model = { authHeader :"register" };

这将被每个子状态继承并且可以更改

用法将是

1
2
// {{authHeader}}
{{Model.authHeader}}

在此处查看更多详细信息:

如何在 angularjs ui-router 中的状态之间共享 $scope 数据?

或者那里