Saya memiliki halaman web yang berfungsi sebagai editor untuk satu entitas, yang duduk sebagai grafik yang dalam di properti $ scope.fieldcontainer. Setelah saya mendapat tanggapan dari REST API saya (melalui $ resource), saya menambahkan arloji ke 'fieldcontainer'. Saya menggunakan arloji ini untuk mendeteksi apakah halaman / entitas "kotor". Saat ini saya sedang membuat tombol simpan memantul tetapi saya benar-benar ingin membuat tombol simpan tidak terlihat sampai pengguna memasukkan model.
Apa yang saya dapatkan adalah pemicu tunggal arloji, yang saya pikir sedang terjadi karena tugas .fieldcontainer = ... dilakukan segera setelah saya membuat arloji saya. Saya berpikir untuk hanya menggunakan properti "dirtyCount" untuk menyerap alarm palsu awal tapi itu terasa sangat berantakan ... dan saya pikir harus ada cara "Angular idiomatic" untuk menangani ini - saya bukan satu-satunya menggunakan arloji untuk mendeteksi model kotor.
Berikut kode tempat saya menyetel jam tangan:
$scope.fieldcontainer = Message.get({id: $scope.entityId },
function(message,headers) {
$scope.$watch('fieldcontainer',
function() {
console.log("model is dirty.");
if ($scope.visibility.saveButton) {
$('#saveMessageButtonRow').effect("bounce", { times:5, direction: 'right' }, 300);
}
}, true);
});
Saya hanya terus berpikir harus ada cara yang lebih bersih untuk melakukan ini daripada menjaga kode "UI dirtying" saya dengan "if (dirtyCount> 0)" ...
undefined
. Ini memiliki nilai default yang diperlukan jika pembaruan model saya tidak muncul dengan semua informasi. Jadi beberapa nilai tidak dapat berubah tetapi harus dipicu.