Http状态代码工厂AngularJs
Http Status Code Factory AngularJs
我是AngularJs的新手,我使用$http-get创建了一个简单的工厂,它得到了一个.json,它有一堆或http状态代码作为键,它们各自的消息作为值。由于某种原因,我继续得到这个错误:
无法读取未定义的属性"get"
json:
{
"200": "Ok",
"201": "Created",
"202": "Accepted",
"404": "Not_Found",
"400": "Bad Request",
"403": "Forbidden",
"417": "Expectation Failed"
}
factory.js
.factory('statusCodesFactory', function () {
var httpStatusCodes = {
getStatus: function ($http) {
$http.get('catalog/statusCodes.json')
.then(function (response) {
httpStatusCodes.code = response;
});
}
}
return httpStatusCodes;
})
您需要正确地传递'$http'的依赖项。
.factory('statusCodesFactory', ['$http', function ($http) {
var httpStatusCodes = {
getStatus: function () {
$http.get('catalog/statusCodes.json')
.then(function (response) {
httpStatusCodes.code = response;
});
}
}
return httpStatusCodes;
});
话虽如此,您的函数实际上并没有返回任何内容。更好的格式是:
.factory('statusCodesFactory', ['$http', function ($http) {
var httpStatusCodes = {
getStatus: function () {
return $http.get('catalog/statusCodes.json')
.then(function (response) {
return response;
});
}
}
return httpStatusCodes;
});
这样调用:
var statusCodes = {};
statusCodesFactory.getStatus().then(function(response){
statusCodes = response;
});
向工厂注入$http服务。
.factory('statusCodesFactory', ['$http', function ($http) {
return {
getStatus: function () {
$http.get('catalog/statusCodes.json')
.success(function (response) {
//
});
}
}
};
}]);
将函数调用为-
statusCodesFactory.getStatus();
若需要将响应返回到控制器,则使用Promises。注入$q服务-
.factory('statusCodesFactory', ['$http', '$q', function ($http, $q) {
return {
getStatus: function () {
var defer = $q.defer();
$http.get('catalog/statusCodes.json')
.success(function (response) {
defer.resolve(response);
});
}
return defer.promise;
}
};
}]);
然后从控制器调用工厂方法作为-
statusCodesFactory.getStatus().then(function(response){
// Use response
});
错误表示不能在$http
上调用方法get
,因为$http
是undefined
。传递给getStatus: function($http)...
的$http
参数是这个问题的根源。您需要弄清楚传递给该函数的是什么,以及为什么是空对象。
相关文章:
- Angularjs工厂注入错误
- 如何在AngularJS工厂中正确声明对象属性
- AngularJS-工厂中promise ID字段的返回值
- 访问 angularjs 工厂数据之外的承诺
- 如何将数据从 angularJS 工厂填充到控制器
- AngularJS工厂调用PHP,然后返回AngularJS
- 在angularjs工厂中,如何在函数解析后返回结果
- 使用angularjs工厂的奇怪结果
- AngularJS工厂、服务和HTTP使用
- 如何使用AngularJs工厂履行承诺
- 无法访问 AngularJS 工厂属性
- 为什么我在使用 .then() 的 AngularJS 工厂中没有得到正确的响应/错误
- 尝试在 AngularJS 工厂中返回局部变量时如何避免函数表达式
- AngularJS 工厂函数无法访问本地存储的缓存变量
- 如何使用 angularjs 工厂
- 使用 AngularJS 工厂加载 json 数据
- AngularJS工厂不会工作(Yeoman)
- 如何在 angularjs 工厂中使用 json 文件返回对象数组
- AngularJS工厂在Karma与Jasmine进行测试
- 从 AngularJS 工厂中的 PHP url 获取 JSON