0
你好我无法弄清楚如何返回正确的功能/服务的一部分,因为它由于Yammer API paignating。角度服务“无法获取属性”,然后“未定义或空引用”
我已阅读文档,并尝试返回整个功能,但我花了这么长时间,我开始绝望,请帮助我。
的回报是在错误的地方,我想 - 我得到的错误:
"Unable to get property 'then' of undefined or null reference"
我的控制器
app.controller("mainController", function($scope, $http, yammerREST) {
$scope.getYammerPosts = function() {
yammerREST.getYammerData($scope.yammerURL).then(function(data) {
$scope.results = data.results;
});
};
});
我的服务
app.service("yammerREST", function($http) {
this.getYammerData = function(url) {
var groupID = url.split("feedId=")[1];
console.log(groupID);
var baseURL = "https://www.yammer.com/api/v1/messages/in_group/" + groupID + ".json?threaded=true";
var url = baseURL;
var results = [];
getPosts();
function getPosts() {
return $http({
url: url,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" }
}).then(function(response) {
results = results.concat(response.data.messages);
console.log(results);
if (response.data.meta.older_available == true) {
url = baseURL + "&older_than=" + results[results.length-1].id;
getPosts();
};
return {
yammerListName: response.data.meta.feed_name,
results: results,
};
}).catch(function(e){
console.log("Error: ", e);
});
};
};
});
如果我正确读取,我认为你的getYammerData方法,不会返回$ http诺言。它可能会错过一个关闭的支架。或'getPosts();'之前的返回? – Coldiary
看来你返回getYammerData而不是返回承诺的$ http或getPost()方法。 – Knitesh
'getPosts'函数被递归调用,但没有递归变量。要做有效的递归,'f(x)'必须调用'f(x + 1)'直到满足一些结束条件。 – georgeawg