Angularjs 路线控制器解决混乱

Angularjs 路线控制器解决混乱,angularjs,Angularjs,我有两个解决方案的问题,每个控制器一个 在jsfiddler脚本中,当HomeCtrl想要解析HomeCtrlData时,我收到一个错误未知提供程序:HomeCtrlDataProvider这里的问题是app.controller()不返回控制器,它返回您的应用程序模块。所以你要分配两次app.resolve,这就是为什么它对其中一个不起作用 我建议您像这样内联resolve函数: var app = angular.module('testApp', [], function($routeP

我有两个解决方案的问题,每个控制器一个


在jsfiddler脚本中,当HomeCtrl想要解析HomeCtrlData时,我收到一个错误未知提供程序:HomeCtrlDataProvider这里的问题是
app.controller()
不返回控制器,它返回您的应用程序模块。所以你要分配两次
app.resolve
,这就是为什么它对其中一个不起作用

我建议您像这样内联resolve函数:

var app = angular.module('testApp', [], function($routeProvider){
    $routeProvider.when('/', {
        template: 'Home {{model}}',
        controller: 'HomeCtrl',
        resolve: {
            HomeCtrlData: function($q, $timeout) {
                var deferred = $q.defer();
                $timeout(function(){
                    return deferred.resolve('HomeCtrlData');
                }, 2000);
                return deferred.promise;
            }
        }
    })
    .when('/About', {
        template: 'About {{model}}',
        controller: 'AboutCtrl',
        resolve: {
            AboutCtrlData: function($q, $timeout) {
                var deferred = $q.defer();
                $timeout(function(){
                    return deferred.resolve('AboutCtrlData');
                }, 2000);
                return deferred.promise;
            }
        }
    });
});

如果您内联HomeCtrl.resolve设置为的值,即,
resolve:{HomeCtrlData:…}
它可以工作,但我不知道为什么。(另外,我认为代码中出现的关于TtrlResolver的第一个位置应该是
HomeCtrlResolver
var app = angular.module('testApp', [], function($routeProvider){
    $routeProvider.when('/', {
        template: 'Home {{model}}',
        controller: 'HomeCtrl',
        resolve: {
            HomeCtrlData: function($q, $timeout) {
                var deferred = $q.defer();
                $timeout(function(){
                    return deferred.resolve('HomeCtrlData');
                }, 2000);
                return deferred.promise;
            }
        }
    })
    .when('/About', {
        template: 'About {{model}}',
        controller: 'AboutCtrl',
        resolve: {
            AboutCtrlData: function($q, $timeout) {
                var deferred = $q.defer();
                $timeout(function(){
                    return deferred.resolve('AboutCtrlData');
                }, 2000);
                return deferred.promise;
            }
        }
    });
});