22 Nov 2013 · 22.162 kali dibaca
AngularJS 1.2: Two-Way Binding Itu Bug, Bukan Fitur
Indah di demo. Sampai data 2000 row dan UI freeze setiap scroll.
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.