0

ファクトリの Angular promise からコントローラにデータを返すのに問題があります。この例では、

http://jsfiddle.net/c3xjE/

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 を返し、そこから何をすべきかをコントローラーに任せますか?

前もって感謝します。

4

1 に答える 1