如何使用ng开关加载内容



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

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

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

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

最新更新