Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有可能使Angularjs ng开关不重新渲染视图?_Javascript_Angularjs_Rendering_Ng Switch - Fatal编程技术网

Javascript 是否有可能使Angularjs ng开关不重新渲染视图?

Javascript 是否有可能使Angularjs ng开关不重新渲染视图?,javascript,angularjs,rendering,ng-switch,Javascript,Angularjs,Rendering,Ng Switch,在我网站的某些页面中,ng switch中有一些指令,如下所示: <div ng-switch="contentMenuObj.model"> <div ng-switch-when="calendar"> // Some directive </div> <div ng-switch-when="history">

在我网站的某些页面中,ng switch中有一些指令,如下所示:

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

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

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

//一些指令
//一些指令
每次我更改“视图”(从日历到历史)并返回(从历史到日历),都会重新呈现日历视图,并在服务器中进行新的查询


我的问题是关于这种行为,是否有可能不重新渲染视图?如果不可能,解决这个问题的最佳方法是什么?

如果我理解正确。当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>

//一些指令
//一些指令

如果我理解正确。当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>

//一些指令
//一些指令

角度重新呈现您的指令,因为ng开关在条件不满足时移除div,这使得指令被销毁,下次必须重新呈现

ng开关
指令相比,
ng show
指令不删除元素,而只隐藏元素

因此,如果要在不重新渲染的情况下隐藏和显示内容,请尝试:

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

//一些指令
//一些指令

角度重新呈现您的指令,因为ng开关在条件不满足时移除div,这使得指令被销毁,下次必须重新呈现

ng开关
指令相比,
ng show
指令不删除元素,而只隐藏元素

因此,如果要在不重新渲染的情况下隐藏和显示内容,请尝试:

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

//一些指令
//一些指令