我正在使用this教程在Angular中进行路由。以下是使用resolve的示例:
$routeProvider
.when("/news", {
templateUrl: "newsView.html",
controller: "newsController",
resolve: {
message: function(messageService){
return messageService.getMessage();
}
}
})
这是我的路线提供者:
$routeProvider
.when('/agency/add',
{
controller: 'agencyController',
templateUrl: baseUrl + 'Content/templates/agencyUpsert.html',
resolve: {
lookup: ['lookupService', function (lookupService) {
//lookupService.getLookups().then(function (response) {
// return response.data;
//});
return lookupService.getLookups();
}]
}
})
这是我的查询服务:
angular.module('app').factory('lookupService', ['$http', 'baseApiUrl', function ($http, baseApiUrl) {
var getLookups = function () {
$http.get(baseApiUrl + 'api/lookups/').then(function (data) {
return data.data;
});
};
return {
getLookups: getLookups
};
}]);
最后,我的控制员:
angular.module('app').controller('agencyController', ['$scope', 'lookup',
function ($scope, lookup) {
$scope.states = lookup.states;
}
}]);
lookupService(和服务器端API)确实受到了攻击,但我得到的错误是当我尝试在控制器中分配$scope.states
时,查找未定义。
为什么通过我的路由解析没有正确地将依赖项注入我的控制器?
答案 0 :(得分:6)
return
中的getLookups
函数中缺少lookupService
:
angular.module('app').factory('lookupService', ['$http', 'baseApiUrl', function ($http, baseApiUrl) {
var getLookups = function () {
// changed here
return $http.get(baseApiUrl + 'api/lookups/').then(function (data) {
return data.data;
});
};
return {
getLookups: getLookups
};
}]);
答案 1 :(得分:0)
我怀疑与您的服务工厂有关,因为请求被API命中,我怀疑工厂是从那里返回数据。
你可以查看吗。
angular.module('app').factory('lookupService', ['$http', 'baseApiUrl', function ($http, baseApiUrl) {
var lookups = {};
lookups.getLookups = function () {
$http.get(baseApiUrl + 'api/lookups/').success(function (data) {
return data;
}).error(function(data,status){
console.log('failed with ' + status); // you need to work on this
});
};
return lookups;
}]);
注意我已经将data.data更改为数据,如果你确实将它包装成更改它。