Javascript ui路由器状态更改时调用控制器方法
我正在构建一个应用程序的一部分,管理员可以在其中添加或删除产品类别。对于导航,我使用Angular的ui路由器。管理员有子视图,可以通过点表示法(admin.category、admin.product等)访问这些子视图 当我将状态更改为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
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状态的解析中呢?基本上:如果您在任何地方都需要它:将解析放在父状态,如果您只在一个(或几个)特定的子状态需要它,则将解析放在特定的子状态。