我正在尝试从getAllDatas
方法获取数据。
这样可以正常运行而没有任何错误:
var getAlldatas = function ($http) {
var getuser = function (username) {
return $http.get("https://api.github.com/users/" + username).then(function (response) {
return response.data;
});
};
抛出错误:
var getAlldatas = function ($http) {
var getuser = function (username) {
var pro = $http.get("https://api.github.com/users/" + username).then(getThis);
var getThis = function (response) {
return response.data;
};
return pro;
};
我是如何得到第二个
的以下错误消息angular.js:10071 TypeError:无法读取未定义的属性'protocol'
第二个与第一个有什么不同,为什么会抛出错误?
为什么两者都不是以类似的方式表现?
答案 0 :(得分:4)
答案 1 :(得分:2)
你的第二个定义分为
var getuser = function (username) {
var pro, getThis;
pro = $http.get("https://api.github.com/users/" + username).then(getThis);
getThis = function (response) {
return response.data;
};
return pro;
};
getThis
在为undefined
变量分配值时只有pro
。出现此问题是由于立即.then
调用并在工作中使用undefined
的回调参数。下一个代码修复了问题:
var getuser = function (username) {
var pro = $http.get("https://api.github.com/users/" + username)
.then(function(result) { getThis(result); });
var getThis = function (response) {
return response.data;
};
return pro;
};
在这种情况下,回调参数不是undefined
,它将正确传递给AngularJS,getThis
变量将有时间获取它的值。
答案 2 :(得分:1)
像这样使用:
var getuser = function (username) {
var pro = $http.get("https://api.github.com/users/" + username)
.then(function(getdata) { getThis(getdata); });
var getThis = function (response) {
return response.data;
};
return pro;
};