gpt4 book ai didi

angularjs - $rootScope 更改不会反射(reflect)在模板上

转载 作者:行者123 更新时间:2023-12-01 08:25:21 25 4
gpt4 key购买 nike

我是 angularjs 的新手。我正在尝试构建一个包含登录页面和仪表板页面的简单应用程序。

现在,当 rootScope 更改时,我在更新 html 模板时遇到了问题。

这是我的组件模板:

<!-- show dashboard page app >
<div layout="column">
<div ng-show="$rootScope.isAuthenticated">
<pm-header></pm-header>
<div layout="row">
<pm-sidebar></pm-sidebar>
<div layout="column" class="sitecontent" layout-padding>
<md-content ui-view></md-content>
</div>
</div>
</div>

<!-- show login page app >
<div ng-hide="$rootScope.isAuthenticated">
<pm-homeheader></pm-homeheader>
<div layout="row">
<md-content ui-view flex></md-content>
</div>
</div>

</div>

登录 block 代码:

'use strict'

export default ['$rootScope', '$state', '$http', '$window', function($rootScope, $state, $http, $window) {
this.user = {};

this.login = () => {
$http.post('./api/auth/login', this.user)
.success(function(data, status, headers, config) {
$window.sessionStorage.token = data.token;

$rootScope.user = data.user;
$rootScope.isAuthenticated = true;

$state.go('home');
})
.error(function(data, status, headers, config) {
delete $window.sessionStorage.token;
})
};
}]

我的问题是当我登录并返回主状态时,ui-router 将模板更新为 ui-view,但 ng-show="$rootScope.isAuthenticated" 没有反射(reflect) html 上的更改,它显示主页而不是仪表板页面的 block 代码。

谁能帮我解决这个问题,非常感谢。

最佳答案

用途:

ng-show="$root.isAuthenticated"

您无法在模板中访问 $rootScope,当您在 Controller 中访问它时,您将其注入(inject)。$root 有效,因为当 Angular 创建一个 rootScope 时,它​​会将 $root 的引用设置为自身,因此它就像访问任何范围内的其他属性。

引用 AngularJS rootScope 代码第 135 行:https://github.com/angular/angular.js/blob/v1.3.6/src/ng/rootScope.js#L135

关于angularjs - $rootScope 更改不会反射(reflect)在模板上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36590206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com