Một điều làm nên sự khác biệt của AngularJS với các khung JavaScript-MVC khác là khả năng lặp lại các giá trị bị ràng buộc từ JavaScript sang HTML bằng cách sử dụng các liên kết. Angular thực hiện điều này "tự động" khi bạn gán bất kỳ giá trị nào cho biến $ scope.
Nhưng làm thế nào tự động là điều này? Đôi khi, Angular sẽ không thực hiện thay đổi, vì vậy tôi cần gọi $ scope. $ Apply () hoặc $ scope. $ Digan () để thông báo cho angle nhận thay đổi. Đôi khi khi tôi chạy một trong hai phương thức đó thì nó báo lỗi và thông báo rằng một thông báo đã được xử lý.
Vì các liên kết (bất kỳ thứ gì bên trong dấu ngoặc nhọn {{}} hoặc ng-thuộc tính) được lặp lại với eval nên điều này có nghĩa là Angular liên tục thăm dò đối tượng $ scope để tìm kiếm các thay đổi và sau đó thực hiện eval để đẩy các thay đổi đó vào DOM / HTML? Hoặc AngularJS bằng cách nào đó đã tìm ra cách sử dụng các biến ma thuật để kích hoạt các sự kiện được kích hoạt khi một giá trị biến thay đổi hoặc được gán? Tôi chưa bao giờ nghe nói về việc nó được hỗ trợ đầy đủ bởi tất cả các trình duyệt, vì vậy tôi nghi ngờ điều đó.
AngularJS theo dõi các ràng buộc và các biến phạm vi của nó như thế nào?