Запуск функции из одного представления в другое в приложении с несколькими представлениями на основе UI-маршрутизатора - PullRequest
0 голосов
/ 15 января 2019

Я настроил приложение для нескольких видов просмотра, используя ui-router, используя следующую $state конфигурацию:

$stateProvider
.state({
        url: "/scatterplots",
        name: "scatterplots",
        views: {
                setup:{
                    component: "scatterplotsAction"
                },
                results:{
                    component: "scatterplotsResults"
                }
            }
        });

Изначально в представлении setup (которое находится в компоненте начальной загрузки аккордеона) я загружаю кучу элементов управления и кнопку, пока представление результатов (которое находится в другом компоненте аккордеона) пусто. Я хочу запустить функцию, которая создает диаграмму рассеяния в представлении results, когда пользователь нажимает кнопку в представлении setup.

До сих пор мне удавалось использовать service, который генерирует определенное событие, используя $broadcast при нажатии кнопки. Когда контроллер представления results захватывает это событие, он запускает свою особую функцию.

Например, в контроллере вида установки я работаю:

userService.triggerResultsPanel();

в контроллере результатов:

userService.subscribe($scope, function eventOccured(event, data) {
    if ( event.name === "open-results") {
            buildScatterplot();
    }
});

Это решение, похоже, работает и может отправлять данные вместе с ним. Но мне было интересно, есть ли какой-нибудь более эффективный и угловой способ сделать это.

Если честно, я попробовал также то, что сказано в этом посте , но на самом деле не сработало. Может быть, потому что я использую components.

Любая идея приветствуется.

...