Как загружается контент с помощью ng-switch

Наша команда разрабатывает приложение в ServiceNow и создала большой виджет, который встраивает пару других виджетов. Каждый встроенный виджет содержится в отдельной вкладке, и мы используем ng-switch для переключения между ними. ServiceNow имеет клиентский API, называемый recordWatch, который будет обновлять содержимое на странице без перезагрузки, если запись была добавлена ​​/ удалена в соответствующей серверной таблице. Мы столкнулись с проблемой, при которой содержимое будет обновляться только в том случае, если предварительно выбрана правильная вкладка.

Например, у нас есть вкладка для истории работ. Если мы уже на вкладке "Журнал работ" и добавили новую запись в серверную часть, содержимое этой вкладки будет обновляться автоматически без перезагрузки. Однако, если мы сделаем то же самое, и откроется еще одна вкладка, то нам нужно будет перезагрузить ее, чтобы увидеть эти обновления.

Мы хотели подтвердить, что ng-switch рендерится только при нажатии на вкладку корреляции, вместо того, чтобы загружать все сразу и только скрывать до тех пор, пока не щелкнет вкладка корреляции. Если первое верно, нужно ли отказаться от ng-switch, чтобы наш recordWatch работал правильно? Есть ли другой способ, который мы можем принять, чтобы выполнить наши требования? Спасибо!

1 ответ

Решение

Есть одно большое различие между ngHide/ngShow и ngIf/ngSwitch. ngHide фактически просто установит отображение css:none, тогда как ngIf / ngSwitch удалит HTML из DOM и прочитает его, если условие будет выполнено. /questions/16626457/ngif-i-ngswitch-angularjs/16626474#16626474

Поэтому все виджеты в неактивном ngSwitch не работают.

Вы можете довольно легко переписать свой виджет с ngSwitch на ngHide. Вы должны попробовать это в первую очередь.

Лучше всего создать сервис, который будет одноэлементным и может быть импортирован во все директивы / виджеты. Этот сервис должен взять логику recordWatch и содержать модели для директив. Таким образом, если вы переключите ngSwitch на новую директиву, она будет использовать самые новые данные из работающей службы. https://fdietz.github.io/recipes-with-angular-js/controllers/sharing-code-between-controllers-using-services.html

Другие вопросы по тегам