Web サービス呼び出しで特定の数を超える行が返されたことを検出すると、メッセージ ボックスを表示する angularjs アプリがあります。残念ながら、Angular はサービスを呼び出すとダイジェスト ループに入ったように見え、メッセージ ボックスが 3 回表示されます。
私が関数をコーディングした方法とは関係がなければ、Angular が内部で何をする必要があるかはあまり気にしません。ただし、このメッセージ ボックスを 3 回表示したり (Web サービスを呼び出したり) したくないのは確かです。以下の関数が呼び出されるたびにコール スタックを調べると、呼び出しがアプリケーション コードから発信されたものではないことがわかります。
最初の呼び出しの後の呼び出しを無視できるように、ループの状態を検出するにはどうすればよいですか?
function bindResults(expression) {
var maxRows = 100;
listData.search(expression, maxRows).then(function (data) {
$scope.searchResults = data;
if (data.length == maxRows)
{
var title = "Search Warning";
var msg = "The maximum number of cases was returned, try being more specific";
var btns = [{ result: 'ok', label: 'OK', cssClass: 'btn-primary' }];
$dialog.messageBox(title, msg, btns)
.open();
}
});
};