gpt4 book ai didi

angularjs - 在单页应用程序中使用 $rootScope 的 ngHide/ngShow

转载 作者:行者123 更新时间:2023-12-04 13:13:26 24 4
gpt4 key购买 nike

再次向大家寻求 AngularJS 的帮助。我正在构建一个 SPA,其中我的布局(主)页面分为三个部分,左侧导航栏、中心内容、右侧项目列表栏。当我加载主页时,我的右侧项目列表应该是隐藏的,但在其余屏幕中应该是可见的。我在 homeController 中创建了一个 $rootScope 变量,并根据位置路径将值设置为“true”,并在模板中使用该变量将值设置为 ngHide。当我在使用 SPA 时导航到不同的页面时,我的左右栏将不会再次加载,只有我的中心内容会这样做,这是一个新 View 。在将数据发送到新 View 模板的 Controller 中加载新 View 时,我将在 homeController 中创建的 $rootScope 变量重置为“false”,但我的右侧栏仍然不可见。尽管插值已将值更新为“true”,但我可以看到 ng-hidden 类仍在运行。任何建议将不胜感激。

来自布局页面的标记:

<aside class="right_bar" ng-hide="{{$root.show}}">
<div class="my-list"><span class="f3">My Cart</span><div class=""><span class="list-count">0</span></div></div><div class="list-item"><ul></ul></div>
</aside>

家庭 Controller 代码:
    function getHomeConfigsCtrl($http, $location, $rootScope) {

$rootScope.show = false;

var loc = $location.path();

if (loc === '/Home/Index' || loc ==='')
{
$rootScope.show = true;
}
}

类别 Controller 代码:这是我重置 $rootScope 变量值的地方
function getAllCategoryDetails($routeParams,$rootScope) {
$rootScope.show = false;
}

最佳答案

您需要了解有关 angular 的两件事,才能使您提供的代码正常工作:

  • 您不需要使用 {{}} 插入值在 ng 指令中,改为使用 ng-hide="showCart" .
  • 假设您的所有 Controller 都在同一个 Angular 应用程序中,
    同一个应用程序中的所有范围都从同一个根继承,
    即您在 $rootScope 上定义的任何内容都将可供所有人使用
    子作用域。要从应用程序的任何 View 中访问 $rootScope.x,您只需: {{x}} 或者在您的情况下,您在指令中使用它,您可以执行以下操作:
    <aside class="right_bar" ng-hide="showCart">
    这将查找您当前的范围,如果它有一个 showCart 那么它将使用它,否则它将获取 $rootScope.showCart
  • 关于angularjs - 在单页应用程序中使用 $rootScope 的 ngHide/ngShow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27748443/

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