我有一个 UserAddController,我希望能够访问由 Web API 返回的国家/地区列表。Web API 可以正常返回数据。这是我获取数据的 app.js:
app.factory('Country', function ($resource) {
return $resource(
"/api/country/:Id",
{ Id: "@Id" },
{ "update": { method: "PUT" } });
});
这是我的控制器:
var UserAddController = function ($scope, $location, service, User) {
$scope.action = "Add";
$scope.countries = service.countries;
};
我在这里声明并创建服务:
app.factory('CountryService', CountryService);
function CountryService($resource) {
return $resource(
"/api/country/:Id",
{ Id: "@Id" },
{ "update": { method: "PUT" } });
}
我使用与上面相同的代码仅用于测试目的。我正在注入这样的服务:
UserAddController.$inject = ['$scope', 'CountryService'];
这是我第一次尝试依赖注入,我不知道我哪里出错了。我目前得到的错误是“服务未定义”。我尝试将服务和 Country 对象都传递给 Controller,结果相同。任何人都可以提供任何建议吗?
编辑:在我的控制器中,这会成功填充代码中的警报,但没有警报不会填充。这是什么原因?
function CountryService($rootScope, $http) {
var self = {};
//self.countries = [{ "$id": "1", "CountryId": 1, "CountryName": "United Kingdom" }, { "$id": "2", "CountryId": 2, "CountryName": "Republic of Ireland" }, { "$id": "3", "CountryId": 3, "CountryName": "Australia" }, { "$id": "4", "CountryId": 4, "CountryName": "New Zealand" }, { "$id": "5", "CountryId": 5, "CountryName": "United States" }, { "$id": "6", "CountryId": 6, "CountryName": "France" }, { "$id": "7", "CountryId": 7, "CountryName": "Germany" }, { "$id": "8", "CountryId": 8, "CountryName": "Finland" }];
$http({
method: 'GET',
url: '/api/country'
}).success(function (data, status, headers, config) {
self.countries = data;
});
alert(self.countries);
return self;
}