ng-switch如何加载内容

时间:2019-01-14 23:25:50

标签: angularjs servicenow ng-switch angularjs-ng-switch

我们的团队正在ServiceNow中开发一个应用程序,并创建了一个嵌入了其他两个小部件的大型小部件。每个嵌入式小部件都包含在其自己的标签中,我们使用ng-switch在每个小部件之间进行切换。 ServiceNow有一个名为recordWatch的客户端API,如果在相应的后端表中添加/删除了条目,该API将更新页面上的内容而无需重新加载。我们遇到了一个问题,即只有预先选择了正确的标签,内容才会更新。

例如,我们有一个工作历史标签。如果我们已经在“工作历史记录”选项卡上并在后端添加新条目,则该选项卡上的内容将自动更新,而无需重新加载。但是,如果我们做同样的事情并且打开了另一个选项卡,那么我们将需要重新加载才能看到这些更新。

我们想确认ng-switch仅在单击相关选项卡时才呈现,而不是一次加载所有内容,而仅隐藏到单击相关选项卡时才呈现。如果前者是正确的,我们是否需要放弃ng-switch才能使recordWatch正常工作?我们还有其他方法可以满足我们的要求吗?谢谢!

1 个答案:

答案 0 :(得分:0)

ngHide / ngShow和ngIf / ngSwitch之间有一个很大的区别。 ngHide实际上将只设置css display:none,而ngIf / ngSwitch将在满足条件的情况下从DOM中删除HTML并读取它。 https://stackoverflow.com/a/16742553/2157581

因此,处于非活动状态的ngSwitch中的所有小部件均未运行。

您可以很容易地将Widget从ngSwitch重写为ngHide。您应该先尝试一下。

最佳做法是创建一个服务,该服务是一个单例,可以将其导入所有指令/窗口小部件。该服务应采用recordWatch逻辑并保存指令的模型。这样,如果您将ngSwitch切换到新指令,它将使用正在运行的服务中的最新数据。 https://fdietz.github.io/recipes-with-angular-js/controllers/sharing-code-between-controllers-using-services.html