Angular-ui 状态 - 多个视图看不到我的解析数据

Angular-ui State - Multiple views not seeing my resolve data

出于某种原因,当使用多个命名视图(angular-ui ui-路由器时,我的 resolvedData 未被控制器看到。有人遇到过这个问题吗?

$stateProvider
    .state('page',{
           abstract: true,
           templateUrl: ...,
           controller: abstractController
    })
    .state('page.index',
           url: '/page',
           resolve : {
               resolvedData: function(CONSTANTS){ return CONSTANTS.data;}
           },
           views: {
               home: {templateUrl: ..., 
                      controller: function(resolvedData){
                        ....
                      }
               },
               list: {templateUrl: ..., 
                      controller: function(resolvedData){
                        ....
                      }
               },
               edit: {templateUrl: ..., 
                      controller: function(resolvedData){
                        ....
                      }
               }
           }
     )

它给我的错误是:错误:[$injector:unpr] 未知提供者:resolvedDataProvider <- resolvedData。这在某种程度上很有趣,因为它只发生在其中一个视图中,而不会出现在其他视图中。

我创建了 small working example,表明你的东西应该可以工作

这将是常量:

.factory('CONSTANTS', function() {
    return { data: { name :  "some name", number : "some number"} };
})

和相同的(只是明确注释的 DI)状态 def:

  // States
  $stateProvider
    .state('page', {
      abstract: true,
      template: '<div>' 
       + '<div ui-view="home"></div>' 
       + '<div ui-view="list"></div></div>',
      controller: 'abstractController'
    })
    .state('page.index', {
      url: '/page',
      resolve: {
        resolvedData: ['CONSTANTS',
          function(CONSTANTS) {
            return CONSTANTS.data;
          }
        ]
      },
      views: {
        home: {
          templateUrl: 'tpl.html',
          controller: ['resolvedData','$scope',
            function(resolvedData, $scope) {
              console.log(resolvedData);
              $scope.resolvedData = resolvedData;
            }
          ],
        },
        list: {
          template: '<div>list view</div>'
        }
      }
    })

所以,上面使用的决议草案是有效的。这是正确的方法...解析功能由一些服务提供...并且 returns 其 属性 data

检查所有 here