2017-04-11 49 views
0

我用ui-router設置了一個奇怪的設置。由於這是一個非常複雜的佈局,請讓我不好說明。 (認爲​​Google圖片搜索/展開)單擊item時,ng-if = true並在該行下方顯示項目詳細信息。Angular Ui-Router標籤定位

category //horizontal row of items 
    ---------------------- 
    item item item etc 
    ---------------------- 

    <ui-view ng-if="item-equals-category"> //ui-view under horizontal row 

category 
    ---------------------- 
    item item item etc 
    ---------------------- 

    <ui-view ng-if="item-equals-category2> 

我遇到的問題是:包含的代碼執行了21次(21行),儘管通過ng-if被隱藏了。這導致Google API等問題出現問題,因爲它會對API進行21次調用並被阻止。有沒有辦法做到這種佈局沒有21 ui-views。僅插入選定項目行下的一個用戶界面視圖。

+1

爲什麼會有21個電話,如果所有的用戶界面不是在直到點擊項目,然後一個顯示? – elpddev

+0

這就是我的想法。那是'ng-if'no的預期行爲?也許我用來評估ng-if的函數是錯誤的。他們不顯示,但內部資源正在加載。我檢查確定沒有'ng-hide'並且可以確認我正在使用'ng-if' – Auzy

+0

@elpddev感謝您的評論。你讓我放心,我做對了,我檢查了我的ng-if。發生了什麼事是'ui-view'上的那個失敗了,然後一個_inside_視圖有效地阻止了視圖,而不是模板頂部的腳本......固定的。謝謝! – Auzy

回答

0

感謝所有的反饋,導致這個答案。發生了什麼是我在加載到ui-view中的內容中將我的JS寫入腳本標記中。如果JS在內容中,它將被評估。 ng-if只能阻止代碼的執行,如果在指令中以適當的「角度方式」完成的話。

將執行:

<div ng-if="false"> 
    <script> 
     console.log("in HTML") 
    </script> 
</div> 

將不會執行:

myApp.directive('shouldntAppear', function() { 
     return { 
      template: "Shouldn't appear", 
      link: function(){ 
       console.log('from directive'); 
      } 
     }; 
    }); 
<div class="test" shouldnt-appear ng-if="false"> 
</div> 

看看這個CodePen和一套NG-如果真/假看到控制檯的差異。