首页 > 解决方案 > ngShow 不适用于 UI-Router StickyStates

问题描述

我们正在使用带有 UI-Router v5 和粘性状态的 AngularJS 1.7.x。该应用程序位于 CodePen 项目中:https ://codepen.io/DavidNJ/project/editor/XgLYyz

基本上,粘性状态使状态保持活动状态,就像父状态保持活动状态一样。为了只显示一个,其他的需要被隐藏。

UI-Router 推荐使用 ng-show。为了使这一点更容易看到,应用程序封装$state.includes(<state name>)了一个写入日志消息的函数。它表明true正在返回ng-show

    <div ui-view="v1" ng-show="ac.inState('view1')"></div>
    <div ui-view="v2" ng-show="ac.inState('view2')"></div>

    vm.inState = (state)=>{
        console.log("checking " +state +": "+$state.includes(state));
        $state.includes(state);
    };

ng-showng-hide类放在标签中,直到ng-showis true。但是,即使函数返回true该类也永远不会更改为ng-show

这可能很简单,但完全难倒我们。

谢谢,

大卫

标签: angularjsangular-ui-router

解决方案


推荐阅读