0

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

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

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

4

1 回答 1

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

于 2019-01-15T09:52:52.380 回答