2016-12-21 34 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> 
相关问题