ファクトリの Angular promise からコントローラにデータを返すのに問題があります。この例では、
update: function (staffList) {
// get local last updated timestamp
var lastUpdatedLocal = "";
var lastUpdatedRemote = "";
for (i=0; i < staffList.length; i++) {
// get largest (most recent) timestamp
if(staffList[i].entry_date > lastUpdatedLocal) {
lastUpdatedLocal = staffList[i].entry_date;
}
}
// get remote last updated timestamp
var promise = $http.get('REMOTE_API_CALL')
.success(function(data, status, header, config) {
return lastUpdatedRemote = data[0].entry_date;
}).then(function(response) {
return response.data[0].entry_date;
});
console.log(promise);
}
ローカル データをフィルタリングしてローカル タイムスタンプを取得し、それをリモート タイムスタンプと比較して、ローカル タイムスタンプがリモート タイムスタンプよりも小さい場合はすべてのデータを再ダウンロードするようコントローラに指示します。
ローカル データを正常にフィルタリングし、期待どおりの結果を得ています。私が立ち往生しているように見えるのは、約束です。.success または .then メソッド内でフィルター処理されたリモート データをログアウトすることはできますが、約束から値を返すことはできませんでした。ここではおそらく変数のスコープに問題があることを知っています。
また、工場からコントローラーにブール値を返すのが最善ですか (更新する必要がありますか? true/false)、またはローカルとリモートのタイムスタンプ付きデータを含む小さな obj を返し、そこから何をすべきかをコントローラーに任せますか?
前もって感謝します。