ui-router解决了将属性注入控制器后失败的问题

时间:2015-01-31 01:02:49

标签: angularjs angular-ui-router

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

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';
                }
            }

        }
    }
})

现在,我正在返回字符串&#39; test&#39;所以我可以调试。我有一个用户服务,一旦修复错误我将使用它。但是,我真的很困惑为什么它会失败。一旦我在控制器中删除了resolve和依赖注入,我的应用程序就会再次正常工作。

1 个答案:

答案 0 :(得分:3)

您应该从局部视图ng-controller中删除gdreport.html指令,因为您已在路径中指定了控制器,它将实例化并将控制器绑定到局部视图。并且您无法自己实例化此控制器,因为通过resolve属性提供的动态依赖性只能由路由器注入。而且您的错误确切反映了它的含义,即propertyUserData提供商不存在。