Angularjs - реализовать функцию разрешения маршрута без маршрутизации / ng-view

В большом приложении мне теперь нужно получить доступ к некоторым данным (вызов json api) асинхронно (раньше доступ к этим данным осуществлялся синхронно). Я бы не хотел менять реализацию компонентов, чтобы теперь справиться с этим асинхронным поведением (слишком рискованно).

Я подумал о функции «решения» $ routeProvider (с обещаниями), которая помогает абстрагировать это асинхронное поведение от компонентов / контроллеров.

К сожалению, я совершенно не использую маршрутизацию.

Есть ли для этого реализация? Если нет, с чего мне начать?

Обновлено:

как я был раньше (jsonData не загружались синхронно, но были прозрачными благодаря функциям systemJS, SystemJS, которые мы сейчас выбрасываем в мусор, отсюда и вопрос): https://plnkr.co/edit/BSreVYNAr7sijYwEpb5G?p=preview

Как я сейчас: https://plnkr.co/edit/WnX0ynOqkZsmEzIxl1SI?p=preview

Посмотрите на консоль, чтобы увидеть пример проблем, которые могут возникнуть сейчас.

Я вроде как заставил это работать, сделав так, но меня это не полностью устраивает (смотрите блок конфигурации): https://plnkr.co/edit/P9Rv6rnboFlaFZ0OARNG?p=preview

$provide.value('$provide', $provide);
        $routeProvider.otherwise({
            template: '<test></test>',
            controller: function ($provide, myJsonData1) {
                $provide.value('myJsonData', myJsonData1);
            },
            resolve: {
                myJsonData1: function(){
                  return getMyJsonData();
                }
            } 
        });

Надеюсь это поможет :)

Можно ли увидеть вашу минимальную настройку, которая проиллюстрирует архитектуру вашего приложения?

Stanislav Kvitash 17.05.2018 21:46

@StanislavKvitash вопрос обновлен

jackstrapp 17.05.2018 23:27

Большая часть обратного вызова .config, похоже, является повторяющимся шаблоном, только шаблон и получатель asyncData меняются от конфигурации к конфигурации. Если это так, и если вас беспокоит большой объем кода, вы можете написать, например, function apply(options) { return ($routeProvider, $provide) => {/* bulky code here */}; }, и составить свои .configs с гораздо менее громоздким .config([ "$routeProvider", "$provide", apply({ template: '<test></test>', getter: getMyJsonData })]).run(function ($route) { });.

Roamer-1888 18.05.2018 02:16

Если вы обнаружите лучший подход, то, если повезет, вам нужно только заменить apply().

Roamer-1888 18.05.2018 02:18
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
4
46
0

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