Я настроил приложение для нескольких видов просмотра, используя 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
.
Любая идея приветствуется.