2016-02-24 6 views
0

Чтобы скрыть и отобразить некоторые меню без использования Javascript вообще в AngularJS. Я играл с ng-hide и ng-show, как показано ниже.ng-hide и ng-show без Javascript

<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> 

http://jsfiddle.net/39Lm68vj/4/

Обновленный вопрос: как сделать меню 2 и 3 исчезают, а меню 1 активен?

+0

В минимуме, вы должны использовать 'нг-show', а не' нг -hide' ... – jcaron

+0

Что такое ожидаемое поведение от всех этих объединений? – charlietfl

+0

@charlietfl ничего не показывает, пока я не нажму на каждый –

ответ

0

Если вы хотите, чтобы показать одну из них в то время, вы бы лучше упростить это до использования только одной переменной.

<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> 

затем в контроллере

$scope.model = { 
    showmenu:1 
} 

$scope.toggleMenu = function(val){ 
    $scope.model.showmenu = val; 
} 

DEMO

+0

спасибо, но есть ли способ выполнить это без привлечения контроллера? –

+0

не могли бы вы посмотреть на это: http://jsfiddle.net/39Lm68vj/4/ –

+0

Почему бы вам не включить контроллер? Вам нужно будет бесполезно вкладывать вещи в корнеплод, и нет смысла делать это. Скрытие переменных в представлении просто затрудняет тестирование – charlietfl

2

В поле ng-click вам необходимо применить логику изменения состояний. Пожалуйста, обратите внимание на ng-init (но лучше, чтобы избежать этого)

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

<form ng-hide="!showmenu1"> 
    <label> 1 </label> 
</form> 

<form ng-hide="!showmenu2"> 
    <label> 2 </label> 
</form> 

<form ng-hide="!showmenu3"> 
    <label> 3 </label> 
</form> 

здесь живой пример: http://jsfiddle.net/39Lm68vj/3/

+0

это также работает: http://jsfiddle.net/39Lm68vj/4/ –

+0

однако что, если я хочу, чтобы меню 2 и 3 исчезли, когда меню 1 активно? С помощью скрипки я представил? –

+0

@jebmarcus только несколько модификаций http://jsfiddle.net/Lzgs88cm/1/ – JanisP

0

Другое предложение

<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> 

 Смежные вопросы

  • Нет связанных вопросов^_^