ユースケース:ユーザーが新しいタスクを作成します。このタスクは、APIを介してアップストリームに送信する必要があります。そのAPIが成功を返したら、それを表示用のスコープに追加します。私はそれをうまく機能させています:
$http.post('some_url', newtask).success(function(data) {
$scope.tasks.push(data);
});
(newtaskは以前に定義された単純なオブジェクトであり、ここには示されていません)。
問題は、APIが非常に遅いことです(信頼性はありますが)が、これをリアルタイムアプリのように感じてもらいたいのです。そのため、新しいタスクをすぐに$ scopeにプッシュし、APIが成功を返したら、それを「実際の」タスクに置き換えたいと思います。だから私は上記の前に:
$scope.tasks.push(newtask); // Add to UI immediately (provisionally)
ここで何が起こるかというと、新しいタスクがすぐに追加され、APIが戻ったときにタスクの2番目のコピーが追加されます。ですから、私がやりたいのは、2番目のコピーが追加されたらすぐに最初のコピーを削除することです。
私はそれをする方法を見つけることができないようです。それとも私のアプローチはすべて間違っていますか?(私は認めます、アプローチは少しハックのように感じるので、私は提案を受け入れます)。