22 Nov 2013 0 kali dibaca
AngularJS 1.2: Two-Way Binding Itu Bug, Bukan Fitur
Indah di demo. Sampai data 2000 row dan UI freeze setiap scroll.
1 menit membaca
AngularJS 1.2.0 stable 14 November 2013. Diajak teman trial untuk admin dashboard mereka.
Two-way binding dengan ng-model itu indah di demo. <input ng-model="user.name"> — ketik, model update, view update otomatis. Magic.
Sampai data 2000 row.
$scope.$watch triggered di setiap digest cycle. 2000 watchers × 5 trigger per detik = lag visible. UI freeze setiap kali user scroll.
Solusi: one-time binding {{::user.name}} (1.3+, saat itu belum ada). Atau pakai ng-bind di tempat strategis. Atau pagination data.
Kami pilih pagination 50 row/halaman.
Pelajaran lain: dependency injection via string parameter parser. Saat minified, parameter rename jadi a, b, c, DI rusak.
// Salah saat minified
app.controller('Ctrl', function($scope, $http) { ... });
// Aman: array notation
app.controller('Ctrl', ['$scope', '$http', function(s, h) { ... }]);
Setiap minify error makan dua jam debug.
Angular 2 baru pengumuman, butuh dua tahun lagi.