API说要解决:
key - {string}:要注入控制器的依赖项的名称。
@egghead,关于这个主题有这个视频:
我不明白的是,该关键对象是什么以及为什么上述视频的作者确实将控制器注入其自身
答案 0 :(得分:2)
key - {string}:要注入的依赖项的名称 控制器。
app.config(function($routeProvider) {
$routeProvider.
when('/', {
controller: 'ListCtrl',
resolve: {
myResolve: function(MyService) {
return MyService();
}
},
templateUrl:'./views/list.html'
})
});
而不是(在控制器中)
app.controller('MyController',function($scope,MyService){
$scope.data = MyService();
});
如果您使用解决方法
app.controller('MyController',function($scope,myResolve){
$scope.data = myResolve;
});
<强>更新强>
一个工作示例
<!doctype html>
<html ng-app="myModule">
<head>
<meta charset="utf-8">
</head>
<body>
<div id="content" data-ng-view=""></div>
<script src="http://code.angularjs.org/1.0.8/angular.min.js"></script>
<script>
var myModule = angular.module('myModule', []);
myModule.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: './index.html',
controller: 'IndexCtrl',
resolve: {
hello: function(Hello) {
return Hello.getMessages();
}
}
})
.otherwise({
redirectTo: '/'
});
});
myModule.factory('Hello', function($q, $timeout) {
var getMessages = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve('Hello');
}, 1000);
return deferred.promise;
};
return {
getMessages: getMessages
};
});
myModule.controller('IndexCtrl',function($scope,hello){
$scope.hello = hello;
});
</script>
</body>
</html>
视图
<p>{{hello}}</p>