Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ui路由器状态更改时调用控制器方法_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript ui路由器状态更改时调用控制器方法

Javascript ui路由器状态更改时调用控制器方法,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我正在构建一个应用程序的一部分,管理员可以在其中添加或删除产品类别。对于导航,我使用Angular的ui路由器。管理员有子视图,可以通过点表示法(admin.category、admin.product等)访问这些子视图 当我将状态更改为admin.category部分时,我需要调用AdminController中的一个方法,从后端api获取一些数据。然而,我不完全确定如何实现这一点 相关代码: .state('admin', { url: '/admin', templateUrl: 'ap

我正在构建一个应用程序的一部分,管理员可以在其中添加或删除产品类别。对于导航,我使用Angular的ui路由器。管理员有子视图,可以通过点表示法(admin.category、admin.product等)访问这些子视图

当我将状态更改为
admin.category
部分时,我需要调用AdminController中的一个方法,从后端api获取一些数据。然而,我不完全确定如何实现这一点

相关代码:

.state('admin', {

url: '/admin',
templateUrl: 'app/admin/dashboard.html',
controller: 'AdminController',
resolve: {

    userPass: function(adminService) {

        return adminService.loggedIn();
    }
}

})
.state('admin.category', {

url: '/category',
templateUrl: 'app/admin/category.html',
controller: 'AdminController',
onEnter: function() {

   //I want to call this in the AdminController 
   parentCategories();

}

});

通常使用angular中的服务共享代码和数据会更好,难道你不能在adminService中移动你想调用的东西吗?我可以将它移动到服务中,但我无法找到一种方法,只有在加载类别状态时才能轻松获取数据。使用resolve传递数据意味着我需要在每个管理状态上设置该变量(即使它是不必要的)。在控制器中设置parentCategories变量,意味着它将被调用,即使它可能永远都不需要我不明白:如果您只需要在category状态下使用它,那么为什么不将它放在这个admin.category状态的解析中呢?基本上:如果您在任何地方都需要它:将解析放在父状态,如果您只在一个(或几个)特定的子状态需要它,则将解析放在特定的子状态。