我们的团队正在用ServiceNow开发一个应用程序,并且已经创建了一个嵌入了其他几个小部件的大小部件。每个嵌入的小部件都包含在它自己的选项卡中,我们使用ng-switch在每个选项卡之间切换。ServiceNow有一个名为recordWatch的客户端API,如果在相应的后端表中添加/删除了一个条目,它将在不重新加载的情况下更新页面上的内容。我们遇到了一个问题,只有在预先选择了正确的选项卡后,内容才会更新。
例如,我们有一个工作历史选项卡。如果我们已经在Work History选项卡上,并且在后端添加了一个新条目,那么该选项卡上的内容将自动更新,而无需重新加载。然而,如果我们做了同样的事情,而另一个选项卡打开了,那么我们就需要重新加载才能看到这些更新。
我们想确认的是,ng-switch只在单击关联选项卡时呈现,而不是一次加载所有内容,并且只隐藏到单击关联选项卡为止。如果前者是正确的,那么为了让我们的recordWatch正常工作,我们需要放弃ng-switch吗?我们是否可以采用其他方法来满足我们的需求?谢谢!
发布于 2019-01-15 17:52:52
ngHide/ngShow和ngIf/ngSwitch有一个很大的区别。ngHide实际上只是设置css display:none,而如果满足条件,ngIf/ngSwitch将从DOM中删除HTML并读取它。https://stackoverflow.com/a/16742553/2157581
因此,非活动ngSwitch中的所有小部件都不会运行。
您可以很容易地将您的小部件从ngSwitch重写为ngHide。你应该先试一试。
最佳实践是创建一个服务,它是一个单例,可以导入到所有指令/小部件中。此服务应采用recordWatch逻辑并保存指令的模型。这样,如果您ngSwitch到一个新指令,它将使用来自正在运行的服务的最新数据。https://fdietz.github.io/recipes-with-angular-js/controllers/sharing-code-between-controllers-using-services.html
https://stackoverflow.com/questions/54190661
复制相似问题