angularjs
  • ng-switch
  • 2013-02-12 2 views 0 likes 
    0

    Я хочу, чтобы скрыть ul S, если они пусты:нг-переключатель всегда верно

    <div class="nav-manage clearfix" ng-app="linksManager"> 
    
        <script type="text/ng-template" id="inner-list.html"> 
    
         <li ng-repeat='link in link.submenu'> 
          <a href="{{link.url}}">{{link.text}}</a> 
          <div ng-switch on="link.submenu"> 
           <ul class="sortable" ng-include="'inner-list.html'"> 
          </div> 
         </li> 
    
        </script> 
    
        <div class="links-arrange" ng-controller="linksRarrange"> 
         <ul class="sortable"> 
          <li ng-repeat="link in links"> 
            <a href="{{link.url}}">{{link.text}}</a> 
            <div ng-switch on="link.submenu"> 
             <ul class="sortable" ng-include="'inner-list.html'"></ul> 
            </div> 
          </li> 
         </ul> 
        </div> 
    

    Но они не скрыты, независимо от содержания в ng-switch on

    на это структура данных:

    var linksData = [ 
        { 
         text: 'Menu Item 1', 
         url: '#' 
        }, { 
         text: 'Menu Item 2', 
         url: '#', 
         submenu: [ 
          { 
           text: 'Sub-menu Item 3', 
           url: '#' 
          }, { 
           text: 'Sub-menu Item 4', 
           url: '#', 
           submenu: // etc ... 
    ]; 
    
    +0

    "нг-переключатель на" не используется самостоятельно .. Вы должны иметь когда дизъюнкцию there..an " ng-switch-when "должен быть ниже или он будет работать, как ожидалось. – ganaraj

    ответ

    2

    в ng-switch работает как ... ну ... switch Javascript необходимо использовать ng-switch on вместе с ng-switch-when для его работы (см. Пример here). Однако, в этом случае, ng-switch, кажется, не быть хорошим решением, что вам нужно что-то вроде AngularUIui-if директивы (ЦСИ код here):

    Что? Удалить элементы из DOM полностью, а не просто скрывать .

    Почему? В ситуациях, когда имеет место обход DOM (например, селекторов CSS : first-child,: last-child и: nth() - child), просто скрывать элементов недостаточно.

    Пример:

    <div ui-if="link.submenu"> 
    

    jsfiddle: http://jsfiddle.net/bmleite/fBLTd/

    +0

    thanx! это именно то, что мне нужно! только один вопрос: должен ли я использовать его в элементе-оболочке, или я могу поместить его внутри элемента, который я хочу скрыть? – ilyo

    +0

    Вы можете поместить его прямо на элемент, который хотите скрыть. – bmleite

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