Ng-if булево условие

0

Я пытаюсь показать кнопку if isNotRegistered == true и скрыть вложенные ссылки. И если это false спрячьте кнопку и покажите ссылки. Почему в моем плункере скрываются все ссылки? http://plnkr.co/edit/XpwWyYKpbeUASUJpnDa0?p=preview

  • 0
    В вашем коде нет ссылки. Опубликуйте его здесь, чтобы сделать вопрос осмысленным, и четко объясните, что вы ожидаете, а что происходит вместо этого.
  • 2
    "Почему в моем плунжере скрываются все ссылки?" - потому что нет ссылок вообще?
Показать ещё 1 комментарий
Теги:

3 ответа

2
Лучший ответ

Я предполагаю, что имена превратятся в ссылки... Проверьте это... Пожалуйста, исправьте меня, если я его неправильно истолковал.

angular.module("App", [])
  .controller("Ctrl", function($scope){
    $scope.list = [
      {item: '1',
        isNotRegistered: false,
        children: [ 
        {name: '11'},
        {name: '12'}
        ]
      },
      {item: '2',
        isNotRegistered: true,
        children: [ 
        {name: '21'},
        {name: '22'}
        ]
      }
      ];
  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="App" ng-controller="Ctrl">
    <ul>
      <li ng-repeat="item in list">{{item.item}}
        <ul>
          <li ng-if="item.isNotRegistered" ng-repeat="child in item.children">{{child.name}}</li>
          <button ng-if="!item.isNotRegistered">Click</button>
        </ul>
      </li>
    </ul>
  </div>
  • 0
    Спасибо, это помогло :)
1

замените это

 <li ng-repeat="item in list">{{item.item}}
        <ul>
          <li ng-if="!item.isNotRegistered" ng-repeat="item in item.children">{{item.name}}</li>
          <button ng-if="item.isNotRegistered">Click</button>
        </ul>
      </li>

из этого

 <li ng-repeat="item in list">{{item.item}}
        <ul>
          <li ng-if="!item.isNotRegistered" ng-repeat="newItems in item.children">{{newItems.name}}</li>
          <button ng-if="item.isNotRegistered">Click</button>
        </ul>
      </li>

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

  • 0
    большое спасибо! :)
0

Вместо этого используйте ng-show и избегайте использования имени той же переменной на разных уровнях. У меня есть первый элемент li как Pitem. Ниже вы работаете. Всего наилучшего

<!DOCTYPE html>
<html ng-app="App">

  <head>
    <script data-require="[email protected]" data-semver="1.5.5" src="https://code.angularjs.org/1.5.5/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-controller="Ctrl">
    <ul>
      <li ng-repeat="Pitem in list">{{Pitem.item}}
        <ul>

          <li ng-show="!Pitem.isNotRegistered" ng-repeat="item in Pitem.children">{{item.name}}</li>

          <button ng-show="Pitem.isNotRegistered">Click</button>
        </ul>
      </li>
    </ul>
  </body>

</html>

Пожалуйста, отметьте как ответ, если это решает ваш вопрос

Ещё вопросы

Сообщество Overcoder
Наверх
Меню