AngularJS предлагает двухстороннюю привязку данных.
Я создал несколько приложений AngularJS и обнаружил, что двухсторонняя привязка данных является мощной функцией, которая увеличила мою производительность.
В последнее время я все чаще встречаюсь в сообщениях и статьях, в которых утверждается, что двусторонняя привязка данных является антипатерном.
Примеры:
- https://medium.com/este-js-framework/whats-wrong-with-angular-js-97b0a787f903#.py84tbylf
- https://www.dotnetrocks.com/?show=1147
- https://www.youtube.com/watch?v=DslsyqnyjQE
- Angular2 двусторонняя привязка данных
Большинство ресурсов утверждают в пользу "Однонаправленного потока данных", как это способствует React/Flux.
Также Angular2 анонсировал в течение некоторого времени, что не будет двусторонней привязки... но последняя документация показывает, что это на самом деле предлагает двустороннюю привязку данных через ngModel (реализован поверх привязки свойств и событий)
Однако я еще не полностью понял проблемы, связанные с двусторонней привязкой данных в AngularJS.
Другие клиентские технологии (т.е. swing, eclipse-rcp, winforms, wpf...) также предлагают двустороннюю привязку данных, и я никогда не спотыкался о том, что это анти-шаблон...
Есть ли канонический пример, который легко иллюстрирует проблемы, которые могут возникнуть в результате двусторонней привязки данных в AngularJS?
Видео, которое я связал выше, похоже, намекает, что проблема $scope.watch
... но пример может быть реализован без $scope.watch
путем привязки к функции, открытой на $scope
.
Если вы избегаете использования $scope
(т.е. Используя controller as
), какие проблемы остаются с двусторонней привязкой данных?