Angularjs read $scope in only root state
我正在使用
我的应用程序。
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' }); |
我的
1 | {{authHeader}} |
我的
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"; }); |
只有在根控制器中我才能得到
您可以为此目的使用 $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 数据?
或者那里