ui-路由器在将 属性 注入控制器后解决失败

ui-router resolve failing after injecting property into controller

我不确定我做错了什么。我收到此错误

Error: [$injector:unpr] http://errors.angularjs.org/1.2.21/$injector/unpr?p0=propertyUserDataProvider%20%3C-%20propertyUserData
at Error (native)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:6:450
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:36:145
at Object.c [as get] (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:34:236)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:36:213
at c (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:34:236)
at d (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:34:453)
at Object.instantiate (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:35:103)
at $get (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:67:253)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:53:362 <div ui-view="performance-ui-view" class="ng-scope">

这是我的代码:

// the controller
app.controller('GlobalDashboardController', ['propertyUserData', function(propertyUserData) {
}])

// ui-router snippet
.state("main", {
    url: "/",
    views: {
        '' : { templateUrl: 'views/main.html' },
        'performance-ui-view@main': {
            templateUrl: 'views/gdreport.html',
            controller : 'GlobalDashboardController',
            resolve: {
                propertyUserData : function() {
                    return 'test';
                }
            }

        }
    }
})

现在,我正在返回字符串 'test',以便进行调试。我确实有一个用户服务,一旦错误被修复,我就会使用它。但是,我真的很困惑为什么它会失败。一旦我删除了控制器中的解析和依赖注入,我的应用程序又开始正常工作了。

您应该从局部视图中删除 ng-controller 指令 gdreport.html 因为您已经在路由本身中指定了控制器,它将实例化控制器并将其绑定到局部视图。而且你不能自己实例化这个控制器,因为通过 resolve 属性 提供的动态依赖只能由路由器注入。你的错误准确地反映了它的意思,即 propertyUserData 提供者不存在。