Я пытаюсь следовать this SO answer explaining how to render a recursive JSON structure using a directive. Однако, в отличие от предоставленного ответа, мои данные - , а не, известные при загрузке DOM, и Угловые пробеги в первый раз.Обновление Угловой директивы JS при изменении Сервиса
Вместо этого мои данные извлекаются из поля ввода HTML и сохраняются в Угловой службе (когда пользователь отправляет форму).
Как сохранить актуальную угловую директиву при изменении данных Сервиса?
Обновления в ответ на ответ
@musically_ut при условии, отличный ответа, что помогло, но выявил связанную проблему, предотвращая реализацию (обновление здесь).
директива делает HTML, который содержит угловую {{expressions}}
которые доступ к данным, хранящимся в $scope
. Поскольку исходное решение было $watch
, когда сервис имел свои данные в готовности. Как я могу обеспечить добавление «новых» данных в $scope
до Директива оказывает?
Обзор архитектуры и потока:
ControllerA
-> Получить информацию от пользователяControllerA
-> Используйте сервис для преобразования данныхControllerB
->$watch
изменений в обслуживаниеDirective
->$watch
для cha НГРЭС в службыControllerB
-> Добавить данные в$scope
Directive
-> Показать преобразованные данные (из службы) с использованием директивы
Проблема заключается между шагами 5 и 6. Директива оказывает {{expressions}}
до того, как контроллер DataB добавил данные в $scope
. Даже если это действительно сработало, это кажется слишком сложным и «взломанным».
Фактически, для регресса я использую $watch
в ControllerB для прослушивания, когда преобразованные данные готовы к использованию. Даже это чувствует себя немного переполненным (услуга не делает асинхронных вызовов).
Я новичок в угловой, и получить на свой пост при поиске информации о просмотре изменений услуги в директивах. Насколько я понимаю вас, pb (и в соответствии с тем, что я читал недавно), вы не должны «добавлять данные в область видимости» в вашем ** ControllerB **, вам лучше сообщить об этом ** службе **, и это будет автоматически сообщаться в область ** controllerB **. Кстати, вы сможете отслеживать ** служебные ** изменения в вашей ** директиве ** (я имею в виду, что легко отслеживать «внешний» ** контроллер. **). Но, возможно, я ошибаюсь. –