Как я могу использовать один и тот же контроллер в нескольких местах, не создавая его новые экземпляры?AngularJS - PullRequest
0 голосов
/ 10 мая 2019

Я по сути пытаюсь создать блоки компонентов HTML, которые можно использовать в редакторе страниц WordPress.Проблема, с которой я сталкиваюсь, заключается в том, что каждый блок использует директиву ng-controller для получения доступа к области действия указанного контроллера.Это приводит к тому, что создаются новые экземпляры того же контроллера, что вызывает задержку появления блоков (это также не практичный способ сделать это).

Способ, которым у меня сейчас настроено приложение, таков:использовать короткий код, связанный с одной большой страницей html, который не может легко управляться конечным пользователем и отходит от структуры на основе компонентов, которую я хотел бы реализовать.Я пытался использовать директиву angularjs .component (), но я столкнулся с той же проблемой, связанной с наличием новых экземпляров контроллера.

<div ng-controller="someCtrl"> 
--- first html block that loads first ---
</div>

<div ng-controller="someCtrl"> 
--- second html block that is delayed until after the first is loaded ---
</div>

По сути, я хотел бы знать, есть лиспособ получить доступ к одному и тому же контроллеру (исключая оболочку) без создания новых экземпляров указанного контроллера?

Ответы [ 3 ]

0 голосов
/ 11 мая 2019

вы можете использовать тот же контроллер, используя ng-if.поэтому, когда значение

<div ng-if="loadFirstHtmlBlock"></div>

истинно.он будет загружать только этот конкретный <div>.

То же самое относится к

<div ng-if="loadSecondHtmlBlock">

Это простой метод, который вы можете использовать.

0 голосов
/ 11 мая 2019

Конечный результат, который я нашел наилучшим способом (в angularjs) для устранения такого рода проблем, заключается в добавлении различных компонентов со своими собственными соответствующими контроллерами, которые извлекают информацию из службы.Это приведет к гораздо лучшей производительности на странице, а также к более «синхронизированному» типу загрузки.

0 голосов
/ 11 мая 2019

Ответ - нет.Каждый экземпляр контроллера будет новым экземпляром.Вы можете воспользоваться предложением @ TheUnknown для обмена данными между этими экземплярами, так как сервис является одноэлементным.

...