2016-05-29 5 views
0

こんにちは私はナビゲーションの方向に取り組んでいます。私は、属性「UIB-ドロップダウン」angularJS ng-attr-式

<li ng-attr-uib-dropdown="{{!!tree[$index].children ? '' : undefined }}" ng-repeat="nav in tree" ng-class="{ 'active' : isActive(nav.path) }"> 

変数を追加する必要が任意の子エントリがある場合 「!!ツリー[$インデックス]が.children」trueまたはfalseを返します。 私は2時間以来Googleの後ろにいますが、この表現を正しい方法でng-attrで使用する方法はわかりません。

これで、すべてのliにuib-dropdownが追加されたためです。それが真実か間違っているかどうかは関係ありません。

誰かが私を助けてくれることを願っています。 おかげ

答えて

0

tree[$index].childrenための私達の答えはtruthy可能性があるので tree[$index].childrenが答えを持っている場合は、それが空または未定義のだならば、それは偽/ falseyなり、trueになります。 !!または三項演算子の必要はありません。

<li ng-attr-uib-dropdown="{{tree[$index].children}}">
また、より良い未定義の「falsey」を説明するために ||(または演算子)を使用することができます。 plunkitを作成し
<li ng-attr-uib-dropdown="{{tree[$index].children || undefined}}">


。ここで私は ng-ifを使用しました。どこに配列 "food"が存在すれば、ドロップダウンを許可します。 "food"配列を削除すると、リンクはドロップダウンなしで置き換えられます。

<a href ng-if="!food"> 
    Click me, no dropdown, yo! 
</a> 

<!-- Simple dropdown --> 
<span ng-if="food" uib-dropdown on-toggle="toggled(open)"> 
    <a href id="simple-dropdown" uib-dropdown-toggle> 
     Click me for a dropdown, yo! 
    </a> 
    <ul class="dropdown-menu" uib-dropdown-menu aria-labelledby="simple-dropdown"> 
     <li ng-repeat="choice in items"> 
      <a href>{{choice}}</a> 
     </li> 
    </ul> 
</span> 
+0

こんにちは、まずはあなたの答えをありがとう。私はちょっと分かりました:) でもまだ動作していません: もし私がnitが存在するスコープ変数を追加したとしても、それはまだ表示されていてディレクティブを呼びます(それは自動的にクラスを追加するので見ることができます) ng-attr-uib-dropdown = "{{asdasdas}}" まだ何が間違っているのでしょうか? – Patrick

+0

@Patrick - 前日に新しいソリューションを追加しました。あなたのために働くことはできませんか? – Esko