2013-12-04 3 views
22

Я рендеринга данных JSON в HTML страницу:нг-если (Angularjs) не работает

<div ng-if="'done'={{task_detail.status}}"> 
    <b>Status :</b> 
    <p class="label label-success">{{task_detail.status}}</p> 
    <br> 
    <br> 
    <div class="progress progress-striped"> 
     <div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width:{{task_detail.percentage_finished}}%"> 
      <span class="sr-only">{{task_detail.percentage_finished}}% Complete</span> 
     </div> 
    </div> 
</div> 

Вот мой визуализации JSON данные:

{ 
    "id": 1, 
    "title": "Launch an EC Instance", 
    "desc": "Needed an EC instance to deploy the ccr code", 
    "status": "done", 
    "percentage_finished": 100 
} 

Issue: HTML взгляд не видно, как управление не перемещается внутри ng-if. Правильно ли синтаксис?

+2

Просто потому, что ответ был очевиден, обязательно не делают вопрос плохо ... +1 – hendrix

+3

Вы использовали оператор присваивания '=' вместо оператора сравнения '' == –

ответ

52

ngIf принимает выражение (JavaScript-код фрагмента). Это означает, что все, что написано в между " " уже внутри контекстом углового и вам не нужно использовать {{ }}:

<div ng-if="task_detail.status == 'done'"> 
12

ngIf также принимает функцию.

<div ng-if="checkStatus(task_detail.status)"> 

Это может быть очень полезно, когда у вас есть несколько кодов или добавляемые логика, которая определяет логический результат в ваших нг-если. Я использую это довольно часто.

2

Я был в тупике в аналогичной ситуации, используя ng-if с условным «Существует ли элемент строкового массива?»

После нескольких попыток (например, используя «TYPEOF») я нашел с помощью «IndexOf» работает очень хорошо, что мне нужно:

<li ng-if="lesson.practice.indexOf('Situations') > -1"><a id="Lev{{level.number}}Les{{lesson.number}}SI">Situations</a></li> 
1

Убедитесь, что у вас последняя версия Угловая, она не была доступна в ранних версиях ~ v1.0.1

1

ng-if принимать такие же, как JS-код (странно), поэтому вам не нужно использовать {{}}, вместо этого передайте свои данные json примерно так.

<div ng-if="'done' === task_detail.status"> 
<div>...</div> 
</div> 
Смежные вопросы