2017-01-10 7 views
7

Я работаю с Angular JS в течение длительного времени, но сейчас столкнулся с странной проблемой, где ng-if просто игнорируется ng-repeat.ng-repeat игнорирует немедленное ng-if

Это образец и простой код, который не работает, как ожидалось

<ul ng-repeat="detail in details"> 
    <span ng-if="2 == 3"> <!-- This should block the next tags to execute--> 
    <li>{{detail.name}} 
     <ul ng-repeat="detailed in details.name"> 
     <li>{{detailed.prof}}</li> 
     </ul> 
    </li> 
    </span> 
    <span ng-if="2 === 2"> <!-- Instead this should get print --> 
    Print this (Updated) 
    </span> 
</ul> 

Вот мой plunkr: https://plnkr.co/edit/xy4Qyd4tXm6kWROiaFVR?p=preview

+0

Таким образом, результат будет пустым? –

+0

Я ожидаю, что это напечатает элемент под ng-if = "2 === 2", то есть «Распечатать это». – undefined

+1

Вопрос из угловой версии. Если мы используем последнюю версию, которая не дает проблемы. проверьте https://plnkr.co/edit/2qOtJK4UkjYqOrzWPote?p=preview –

ответ

3

использование этой версии

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 

или использовать ng-if ->ng-show

+1

Краткая информация. Большое спасибо всем остальным за ответ. Выбор этого предпочтительного ответа, поскольку это первый ответ. – undefined

+1

Да, это только правильный ответ. –

3

Wha т вы ищете это:

<div ng-show="'2' == '3'"> 
    <li>{{detail.name}} 
     <ul ng-repeat="detailed in details.name"> 
     <li>{{detailed.prof}}</li> 
     </ul> 
    </li> 
</div> 

Вместо использования ng-if использования ng-show.

+0

Я хочу ng-if быть внутри ng-repeat. Потому что мне нужно сравнивать во время цикла, exa. ng-if = "detail.prof === 'abc'". Поэтому я не могу сказать это раньше. Но я вижу, что ng-show может решить эту проблему. Могу рассмотреть возможность добавления этого. Кстати, я не остановился. – undefined

1

У меня есть обновление вы Punker

Пожалуйста, обратите внимание на this

проблема является версия выпуск. также вы конвертируете его в число как (ng-if="+2 === +2") попробуйте этот код, а не ваш

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

    <head> 
    <meta charset="utf-8" /> 
    <title>AngularJS Plunker</title> 
    <script>document.write('<base href="' + document.location + '" />');</script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> <script src="app.js"></script> 
    </head> 

    <body ng-controller="MainCtrl"> 
    <ul ng-repeat="detail in details"> 
    <span ng-if="+2 === +3"> 
     <li>{{detail.name}} 
     <ul ng-repeat="detailed in details.name"> 
      <li>{{detailed.prof}}</li> 
     </ul> 
     </li> 
    </span> 
    <span ng-if="+2 === +2"> 
     Nothing printed 
    </span> 
    </ul> 

    </body> 

</html>