Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Конечно, есть такая штука как Object.observe(), но эта вещь, пока еще, не является частью стандарта.Или уже, т.к. автор фичи в прошлом году грозился её закрыть и вырезать её из хрома.
Например, для text input вешается слушатель на событие keyup.Используется событие «input» (keyup может применяться для поддержки IE6, хотя ангуляр с ним не дружит)
что $timeout ждет, пока закончится текущий $digest-цикл, затем выполняет кодТут используется setTimeout, он уже и вызывает код когда другой код не выполняется (один поток же)
Что такое $digest-цикл?Скорее между ViewModel и View, но все равно это частный случай, $digest-цикл — это процесс поиска изменений (dirty-checking) данных и вызов подписчиков (обработчиков). А что они будут синхронизировать (или не будут) это уже дело десятое.
В AngularJS это как раз и есть процесс синхронизации значений между Model и View.
3. The variables pointing to objects that are being observed must be re-assigned to point to a proxy returned by the call to Object.observe, e.g.Про что я выше и написал, что придется работать с proxy оберткой, а не с исходным объектом.
вам нужно сделать для него proxy обертку и как то передать обратно
можно реактивно реагировать на изменения в объектеМногие фреймворки всю реактивность складывают в «беклог» и по таймауту (либо nextTick) вызывают обработчики (это «защищает» при множественном изменении одной переменной), кстати O.O как раз по дефолту так и работает, так что «немедленная» реактивность не так уж и нужна.
все равно, лишь бы не как в ангуляре:)Подход ангуляра не так уж и плох (есть свои плюсы), при том что это один из самых быстрых методов для большинства UI (см. бенчмарки).
Используется событие «input» (keyup может применяться для поддержки IE6, хотя ангуляр с ним не дружит)
Тут используется setTimeout, он уже и вызывает код когда другой код не выполняется (один поток же)
Скорее между ViewModel и View, но все равно это частный случай, $digest-цикл — это процесс поиска изменений (dirty-checking) данных и вызов подписчиков (обработчиков). А что они будут синхронизировать (или не будут) это уже дело десятое.
запускается обычный таймаут вместо $timeout и потом внутри scope.$digest
Динамическое связывание данных в HTML и JS