AngularJS $routeProvider 解析不工作
AngularJS $routeProvider resolve not working
我在 Angular 中使用 this 路由教程。这是它给出的使用 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
时查找未定义。
为什么它不能通过我的路由解析正确地将依赖项注入我的控制器?
我怀疑与您的服务工厂有关,因为请求是在 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 更改为数据,如果您真的将其包装成那样,请更改它。
lookupService
中的 getLookups
函数缺少 return
:
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
};
}]);
我在 Angular 中使用 this 路由教程。这是它给出的使用 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
时查找未定义。
为什么它不能通过我的路由解析正确地将依赖项注入我的控制器?
我怀疑与您的服务工厂有关,因为请求是在 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 更改为数据,如果您真的将其包装成那样,请更改它。
lookupService
中的 getLookups
函数缺少 return
:
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
};
}]);