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