不带Javascript的ng隐藏和ng显示

不带Javascript的ng隐藏和ng显示,javascript,angularjs,ng-show,ng-hide,Javascript,Angularjs,Ng Show,Ng Hide,为了在AngularJS中隐藏和显示一些菜单而不使用Javascript。我玩了ng hide和ng show,如下所示 <a ng-click="showmenu1=true">Menu 1</a> <a ng-click="showmenu2=true">Menu 2</a> <a ng-click="showmenu3=true">Menu 3</a> <form ng-show="showmenu1">

为了在AngularJS中隐藏和显示一些菜单而不使用Javascript。我玩了ng hide和ng show,如下所示

<a ng-click="showmenu1=true">Menu 1</a>
<a ng-click="showmenu2=true">Menu 2</a>
<a ng-click="showmenu3=true">Menu 3</a>

<form ng-show="showmenu1">
  <label> 1 </label>
</form>

<form ng-show="showmenu2">
  <label> 2 </label>
</form>

<form ng-show="showmenu3">
  <label> 3 </label>
</form>


更新问题:当菜单1处于活动状态时,如何使菜单2和3消失?

ng单击时,您需要应用更改状态的逻辑。请查看
ng init
(但最好避免)


ng上单击
,您需要应用更改状态的逻辑。请查看
ng init
(但最好避免)


如果一次只想显示其中一个变量,最好将其简化为只使用一个变量

<a ng-click="toggleMenu(1)">Menu 1</a>
<a ng-click="toggleMenu(2)">Menu 2</a>
<a ng-click="toggleMenu(3)">Menu 3</a>

<form ng-show="model.showmenu == 1">
  <label> 1 </label>
</form>

<form ng-show="model.showmenu == 2" ng-cloak>
  <label> 2 </label>
</form>

<form ng-show="model.showmenu == 3" ng-cloak>
  <label> 3 </label>
</form>

如果一次只想显示其中一个变量,最好将其简化为只使用一个变量

<a ng-click="toggleMenu(1)">Menu 1</a>
<a ng-click="toggleMenu(2)">Menu 2</a>
<a ng-click="toggleMenu(3)">Menu 3</a>

<form ng-show="model.showmenu == 1">
  <label> 1 </label>
</form>

<form ng-show="model.showmenu == 2" ng-cloak>
  <label> 2 </label>
</form>

<form ng-show="model.showmenu == 3" ng-cloak>
  <label> 3 </label>
</form>

另一个建议

<a ng-click="menu=1">Menu 1</a>
<a ng-click="menu=2">Menu 2</a>
<a ng-click="menu=3">Menu 3</a>

<form ng-show="menu == 1">
  <label> 1 </label>
</form>

<form ng-show="menu == 2">
  <label> 2 </label>
</form>

<form ng-show="menu == 3">
  <label> 3 </label>
</form>
菜单1
菜单2
菜单3
1.
2.
3.
另一个建议

<a ng-click="menu=1">Menu 1</a>
<a ng-click="menu=2">Menu 2</a>
<a ng-click="menu=3">Menu 3</a>

<form ng-show="menu == 1">
  <label> 1 </label>
</form>

<form ng-show="menu == 2">
  <label> 2 </label>
</form>

<form ng-show="menu == 3">
  <label> 3 </label>
</form>
菜单1
菜单2
菜单3
1.
2.
3.


至少,您应该使用
ng show
,而不是
ng hide
…所有这些组合的预期行为是什么?@charlietfl在我单击每一个之前不会显示任何内容,但您希望一次只显示一个吗?
ng click=“showmenu=1”
ng show=“showmenu==1”
重复。至少,您应该使用
ng show
,而不是
ng hide
…所有这些组合的预期行为是什么?@charlietfl在我单击每一个之前不会显示任何内容,但是您希望一次只显示一个吗?
ng click=“showmenu=1”
ng show=“showmenu==1”
重复。但是,如果要在菜单1处于活动状态时使菜单2和3消失,该怎么办?使用我提供的小提琴?谢谢,我看到您在这里使用了ng init,但在回复中提到,最好避免使用它。为什么要避免它?@jebmarcus因为它正在对表达式执行“eval”操作,您能否澄清执行eval操作的含义?@jebmarcus此功能以及不在此处使用它的原因:以及此处的官方文档:但是,如果我想在菜单1处于活动状态时使菜单2和3消失,该怎么办?使用我提供的小提琴?谢谢,我看到您在这里使用了ng init,但在回复中提到,最好避免使用它。为什么要避开它?@jebmarcus因为它正在执行“评估”对于表达式,您可以澄清执行eval的含义吗?@jebmarcus此函数和不在此处使用它的原因:以及此处的官方文档:谢谢,但是否有任何方法可以在不涉及控制器的情况下完成此操作?您为什么不想涉及控制器?您需要在rootscope上放置不必要的内容,这样做没有意义。在视图中隐藏变量只会使测试更加困难。我觉得我的控制器中已经有太多东西了,似乎需要使用单独的控制器或指令。你的推理毫无道理。如果控制器在将一组逻辑移动到服务或开始将控制器分解到其他控制器或方向时变得混乱,那么也可以使用该哲学开始遇到子作用域问题谢谢,但在不涉及控制器的情况下,是否仍有实现这一点的方法?为什么不涉及控制器?您需要在rootscope上放置不必要的内容,这样做没有意义。在视图中隐藏变量只会使测试更加困难。我觉得我的控制器中已经有太多东西了,似乎需要使用单独的控制器或指令。你的推理毫无道理。如果控制器在将一组逻辑移动到服务或开始将控制器拆分为其他控制器或指令时变得混乱,那么使用这种原理也会开始遇到子范围问题