Angular js:->访问解析属性时,angular引发未知提供程序错误

Angular js :-> angular throws unknown provider error while accessing resolve proprerty

本文关键字:angular 未知 错误 程序 属性 js gt 访问 Angular      更新时间:2023-09-26

当我从视图中删除ng控制器时,resolve属性工作得很好,但当我将ng控制器放在模板中时,它会抛出未知的provider。有人能帮我解释为什么会发生这种情况吗??

app.config(['$routeProvider',function($routeProvider) {
        $routeProvider.
            when('/', {
                templateUrl: 'page/login.html',
                controller: 'loginController',
                resolve: {
                    message: function(demoService){
                        return demoService.getResolveContent();
                    },
                    greeting: function(demoFactory){
                        return demoFactory.getGreeting();
                    }
                }
            }).
            when('/profile', {
                templateUrl: 'page/profile.html',
                controller: 'profileController'
            })
            .otherwise({
                redirectTo: '/'
            });
    }]);

函数loginController($scope,$location,message,greeting){

    $scope.tempfactory = greeting;
}
<div style="color: white;width: 100%;height: 100%;background-color: lightgray" ng-controller="loginController">
    <p>{{tempfactory}}</p>
    <input type="text" ng-model="inputBoxValue">
    <button style="width: 100px;height: 100px" ng-click="profilePage()"></button>
</div>

如果我用这个替换上面的html:

<div style="color: white;width: 100%;height: 100%;background-color: lightgray" >
    <p>{{tempfactory}}</p>
    <input type="text" ng-model="inputBoxValue">
    <button style="width: 100px;height: 100px" ng-click="profilePage()"></button>
</div>

它运行得很好。任何人都能告诉我这是什么原因吗。

使用resolve添加的依赖项是作为正在解析的路由和正在创建的控制器的一部分注入的,否则不可用。这些不是像servicefilter那样的全局依赖关系。

如果使用ng-controller,则不会发生路由转换,也不会进行与路由相关的依赖项解析和控制器创建,并且会引发DI错误。

如果将控制器放入路由定义中并使用ng-controller,则会创建两个控制器实例,但其中一个会出现DI错误。