使用Angular UI路由器,子状态是否可以在父状态的控制器中调用函数?

时间:2015-09-15 21:22:06

标签: angularjs angular-ui-router

我可以使用stateParams在父控制器中设置值 - 但是想要调用该控制器中的函数。我是否需要在孩子身上放一些东西并解决:'或者' onEnter:'用于调用父控制器中的函数的属性。注意:孩子们没有任何模板,因为他们会使用父母模板。

myApp.config(function($stateProvider) {
$stateProvider
    .state('reports', {
        url: "/reports",
        templateUrl: "reports.parent.template.html",
        controller: "ReportsController",
        controllerAs: "reports"
    })
    .state('reports.users', {
        url: "/users",
        reportSettings: {
            title: "Active Users Report",
            reportName: "UserList.trdx"
        }
    })
    .state('reports.departments', {
        url: "/departments",
        reportSettings: {
            title: "Active Departments Report",
            reportName: "DepartmentList.trdx"
        }
    })
});

1 个答案:

答案 0 :(得分:1)

更新:请参阅此plunkr了解解决方案:http://plnkr.co/edit/xnMDiv

由于您将ReportsController注入“报告”,您可以简单地将该控制器中的函数定义为“this.function”,然后在子视图中使用“reports.function”来访问它。

如果您想在子控制器中调用该函数(而不是视图HTML),那么您需要在父级创建该函数作为解析并将其注入子控制器。

所以:

resolve: { myfunction... }

并在您的子控制器中

('myfunction')

希望这是有道理的。我很移动,写作很棘手。