加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 根据路径隐藏ng-view DOM之外的元素

发布时间:2020-12-17 17:18:48 所属栏目:安全 来源:网络整理
导读:题: 如何在我的角度应用程序中添加“登录”视图/路径,该应用程序隐藏了ng-view DOM之外的元素? 情况: 在我的Angular页面中,左侧是导航树视图,中间是主视图: div ng-app="myApp" div class="col-sm-3" ng-controller="TreeController" div treeviewdirect
题:

如何在我的角度应用程序中添加“登录”视图/路径,该应用程序隐藏了ng-view DOM之外的元素?

情况:

在我的Angular页面中,左侧是导航树视图,中间是主视图:

<div ng-app="myApp">
    <div class="col-sm-3" ng-controller="TreeController">
        <div treeviewdirective-here>
        </div>
    </div>
    <div class="col-sm-9 content" ng-view="">
    </div>
</div>

树视图中的每个节点都使用诸如window.location.hash =’#/’routeForTheClickedItem;之类的内容来更改位置.

使用标准路由,这很好用,即每次都不重新加载树,而只是主“窗口”.

问题:

我想添加一个登录视图的登录功能.对于此视图,只有在登录后才能看到树视图.为了通过正常路由实现这一点,我知道我可以将ng-view向上移动一级,即将树视图嵌入到每个视图中 – 但这会导致树视图在每次路径更改时重新加载.

是否有一个简单的替代方案,允许我检查ng-view中显示的页面?或者在路由期间检查一些其他变量集?然后我可以使用类似的东西:

<div class="col-sm-3" ng-controller="TreeController" ng-show="IsUserLoggedIn">

解决方法

您可以在顶部div级别定义控制器.

就像是:

<div ng-app="myApp" ng-controller="MainController">

并在MainController中注入一个Session.像Session这样的东西足以决定是否显示树.

这是MainController的一个例子:

_app.controller('MainController',function ($scope,SessionService) {
    $scope.user = SessionService.getUser();
});

这是SessionService的一个例子:

_app.factory('SessionService',function() {
    var user = null;
    return {
        getUser : function() {
            return user;
        },setUser : function(newUser) {
            user= newUser;
        }
    };
});

当然,登录时必须将用户设置为SessionService.因此,SessionService也必须注入到LoginController中.

最后,你的HTML:

<div ng-app="myApp" ng-controller="MainController">
    <div class="col-sm-3" ng-controller="TreeController">
        <div ng-hide="user == null" treeviewdirective-here>
        </div>
    </div>
    <div class="col-sm-9 content" ng-view="">
    </div>
</div>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读