Ada juga kemungkinan itu tidak menjadi loop tak terbatas sama sekali. 10 iterasi bukanlah angka yang cukup besar untuk menyimpulkan dengan sejumlah kepastian. Jadi sebelum melakukan pengejaran liar, mungkin disarankan untuk mengesampingkan kemungkinan itu terlebih dahulu.
Metode termudah untuk melakukannya adalah meningkatkan jumlah loop intisari maksimum ke angka yang jauh lebih besar, yang dapat dilakukan dalam module.config
metode, menggunakan $rootScopeProvider.digestTtl(limit)
metode. Jika infdig
kesalahan tidak lagi muncul, Anda hanya memiliki beberapa logika pembaruan yang cukup kompleks.
Jika Anda membangun data atau tampilan dengan mengandalkan jam tangan rekursif, Anda mungkin ingin mencari solusi berulang (yaitu tidak mengandalkan loop intisari baru untuk memulai) menggunakan while
, for
atau Array.forEach
. Terkadang strukturnya sangat bersarang dan bahkan tidak rekursif, mungkin tidak banyak yang harus dilakukan dalam kasus tersebut kecuali menaikkan batas.
Metode lain untuk men-debug kesalahan adalah melihat data intisari. Jika Anda cukup mencetak JSON, Anda mendapatkan array array. Setiap entri tingkat atas mewakili sebuah iterasi, setiap iterasi terdiri dari daftar entri arloji.
Misalnya, jika Anda memiliki properti yang dimodifikasi dengan $watch
on sendiri, mudah untuk melihat bahwa nilainya berubah tanpa batas:
$scope.vm.value1 = true;
$scope.$watch("vm.value1", function(newValue)
{
$scope.vm.value1 = !newValue;
});
[
[
{
"msg":"vm.value1",
"newVal":true,
"oldVal":false
}
],
[
{
"msg":"vm.value1",
"newVal":false,
"oldVal":true
}
],
[
{
"msg":"vm.value1",
"newVal":true,
"oldVal":false
}
],
[
{
"msg":"vm.value1",
"newVal":false,
"oldVal":true
}
],
[
{
"msg":"vm.value1",
"newVal":true,
"oldVal":false
}
]
]
Tentu saja dalam proyek yang lebih besar ini mungkin tidak sesederhana itu, terutama karena msg
bidang sering memiliki nilai "fn: regularInterceptedExpression"
jika jam tangan adalah {{ }}
interpolasi.
Selain itu, metode yang telah disebutkan, seperti memotong HTML untuk menemukan sumber masalah, tentu saja membantu.