2016-12-21 54 views
0

在我的網站的一些頁面,我有NG-開關內部的一些指令,例如:是否有可能Angularjs ng-switch不能渲染視圖?

 <div ng-switch="contentMenuObj.model"> 

      <div ng-switch-when="calendar"> 
       // Some directive 
      </div> 

      <div ng-switch-when="history"> 
       // Some directive 
      </div> 
     </div> 

,我改變「視圖」(歷史)並返回每次(史歷)角度重新渲染日曆視圖和新的查詢在服務器中進行。

我的問題是關於這種行爲,是否有可能角沒有重新呈現視圖?如果不可能,解決這個問題的最好方法是什麼?

回答

1

如果我理解正確。當contentMenuObj.model更改時,您不希望重新渲染視圖 - 對嗎?如果是這樣應用單向綁定

<div ng-switch="::contentMenuObj.model"> 

     <div ng-switch-when="calendar"> 
      // Some directive 
     </div> 

     <div ng-switch-when="history"> 
      // Some directive 
     </div> 
    </div> 

在這種情況下,模型將只加載一次。

或者如果您只想加載指令一次,則嘗試使用ng-show/ng-hide指令。

 <div ng-show="contentMenuObj.model == 'calendar'"> 
      // Some directive 
     </div> 

     <div ng-show="contentMenuObj.model == 'history'"> 
      // Some directive 
     </div> 
1

角度重新渲染你的指令,因爲NG-開關刪除DIV時ng-switch-when條件未得到滿足,這使得指令是破壞和下一次必須重新渲染。

ng-show指令與ng-switch指令不同,但僅隱藏指令。

所以,如果你想隱藏和顯示,而無需重新渲染內容,請嘗試:

<div> 
    <div ng-show="contentMenuObj.model === 'calendar'"> 
    // Some directive 
    </div> 
    <div ng-show="contentMenuObj.model === 'history'"> 
    // Some directive 
    </div> 
</div> 
相關問題