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

时间:2014-11-06 09:16:35

标签: javascript angularjs

当我从视图中删除ng-controller时,resolve属性工作得很好但是当我把ng-controller放在模板中时,它会抛出未知的provider.can任何正文帮助我解释为什么会发生这种情况?

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>

它工作得非常好。任何人都告诉我这个原因。

1 个答案:

答案 0 :(得分:2)

使用resolve添加的依赖项将作为正在解析的路由和创建控制器的一部分注入,否则无法使用。这些不是全局依赖项,如servicefilter

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

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