在基于多视图ui路由器的应用程序中将功能从一个视图触发到另一个视图

时间:2019-01-15 12:50:14

标签: javascript angularjs angular-ui-router multiview

我已使用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();
    }
});

该解决方案似乎可以工作,并且还可以发送数据。但是我想知道是否还有其他更有效和棱角分明的方法来做到这一点。

说实话,我也尝试了此post中所说的内容,但并未真正起作用。可能是因为我正在使用components

欢迎提出任何想法。

0 个答案:

没有答案