2013-11-23 3 views
0

У меня есть этот код:Угловая. Более конкретно, если условие в массиве

<div style="cursor:pointer;padding-top:3px;padding-left{{arrow_pos[road.id+'_'+scale.year+'_'+scale.week]}}px" > 
    <div class="arrow_title">{{arrow_title[road.id+'_'+scale.year+'_'+scale.week]}}</div> 
    <div class="{{arrow[road.id+'_'+scale.year+'_'+scale.week]}}"></div> 
</div> 

Как ng-if так, что этот кусок кода генерируется Arrow [road.id + '_' + scale.year + '_' + scale.week] не пусто.

Я попытался это:

<div ng-if="arrow_title[road.id+'_'+scale.year+'_'+scale.week] !=''"> 
    same code for the two inner divs 
</ div> 

AngularJS v1.0.7

, но он не работает. Как решить мою проблему.

ответ

1

Выражение:

arrow_title[road.id+'_'+scale.year+'_'+scale.week] !='' 

Похоже, вы динамически обращаетесь к объекту объекта arrow_title.

Если это верно, результат, скорее всего, не будет '' (если значение свойства не является строкой). Результатом будет либо значение свойства, либо undefined.

Как @musically_ut описывает, ng-if не доступен в 1.0.7, но вы можете использовать ng-show с этим выражением:

<div ng-show="arrow_title[road.id+'_'+scale.year+'_'+scale.week]"> 
same code 
</ div> 
2

ng-if можно приобрести только с углового 1.2.

В противном случае синтаксис выглядит правильно.

Есть несколько работ для обхода угловых 1.0.7:

  1. Использование ng-show/ng-hide с тем же условием
  2. Использование ng-switch:

    <div ng-switch="arrow_title[road.id+'_'+scale.year+'_'+scale.week] !=''"> 
        <div ng-switch-when="true"> 
         <!-- your code --> 
        </div> 
    </div> 
    
Смежные вопросы