Angularjs 如何在Angular ui route和#x27;在不同视图上时的父/子状态?

Angularjs 如何在Angular ui route和#x27;在不同视图上时的父/子状态?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,这是我的。我需要categories在HomeController和NavbarController上提供 $stateProvider .state('master', { abstract: true, views: { 'navbar@': { templateUrl: 'views/partials/navbar.default.html',

这是我的。我需要
categories
HomeController
NavbarController
上提供

    $stateProvider
        .state('master', {
            abstract: true,
            views: {
                'navbar@': {
                    templateUrl: 'views/partials/navbar.default.html',
                    controller: 'NavbarController as nb',
                }
            },
            resolve: {
                categories: function(Category) {
                    return Category.getList({ depth: 0 });
                },
            }
        })

        .state('home', {
            parent: 'master',
            url: '/',
            views: {
                'main@': {
                    templateUrl: 'views/home/home.html',
                    controller: 'HomeController as hc',
                }
            },
            resolve: {
                deals: function(Deal) {
                    return Deal.getList();
                },
            }
        });
根据

子状态将从父状态继承已解析的依赖项,它们可以覆盖这些依赖项。然后,您可以将解析的依赖项注入控制器并解析子状态的函数

它还指出:

resolve关键字必须是相对于状态而不是视图的(如果使用多个视图)。 如果要在实例化子级之前等待承诺被解析,则必须将解析键注入子级状态


那么您没有从HomeController访问NavbarController的权限?将其传递给服务,然后将该服务注入两个控制器是否有效?如果我需要在多个控制器上访问某些内容,我通常会这样做,虽然我没有像您这样在$stateprovider中使用解析的经验have@LukeSchunk如果您希望承诺得到解决,并且仅在此之后才调用控件,那么您将如何实现这一点?问题似乎与我使用两种不同视图(
navbar
main
)有关。从文档中可以看出:“完全有可能存在嵌套状态,其模板填充站点中各种非嵌套位置的ui视图。在这种情况下,您不能期望在子状态视图中访问父状态视图的范围变量。”正确。也许你可以共享自定义数据点,而不是自定义数据(从服务中获取)可以作为一种尝试。我可以。那怎么办?我基本上需要在两个控制器执行之前加载解析。你能举个例子吗?
$stateProvider.state('parent', {
  resolve:{
     resA:  function(){
        return {'value': 'A'};
     }
  },
  controller: function($scope, resA){
      $scope.resA = resA.value;
  }})
 .state('parent.child', {
  resolve:{
     resB: function(resA){
        return {'value': resA.value + 'B'};
     }
  },
   controller: function($scope, resA, resB){
      $scope.resA2 = resA.value;
      $scope.resB = resB.value;
  }