Вот это ваш Alight, и вот такой пример из трех строчек: aLight - The Basics - JSFiddle [jsfiddle.net]
А кто-нибудь понимает нахуй нужен метод scope.$scan (вопрос риторический, я понимаю зачем он нужен, но мне он представляется излишеством).
И главное есть ли какой-то формальный критерий, когда его надо вызывать, а когда не надо, ибо в некоторых случаях биндинг и без него срабатывает, а в некоторых, как в этом примере, не срабатывает???
@AlexB, $scan это явный способ вызвать digest-цикл и хорошо что он не все время пытается его вызывать (в цикле или по таймауту, или еще как), иначе бы все тормозило конечно. "Самостоятельно" сработает, если ты юзаешь директивы alight (al-text, al-value...), которые сами вызывают $scan, от этого кажется что все работает автоматически, но это не так)
Ты хочешь чтобы на каждое изменение скопа запускался digest?
Спустя 162 сек.
зачем нужен "al-get-scope" почему не al-controller?
Ты хочешь чтобы на каждое изменение скопа запускался digest?
Ну как-то в большом Ангуляре все происходит само при присвоении. Я ожидал аналогичного поведения. Да и тут происходит, если не в setTimeout функции это делать.
А мой пример очень похож, у меня тоже setTimeout в своей директиве, только внутри него еще аджакс запрос, который регулярно данные обновляет - суть вся та же. Собственно, вопрос исчерпан, все ясно, ради производительности немного пожертвовали универсальностью.
А кто-нибудь понимает нахуй нужен метод scope.$scan
Да и тут происходит, если не в setTimeout функции это делать.
все ясно, ради производительности немного пожертвовали универсальностью.
Есть разные подходы:
1) observe (как в knockout)
2) get/set (присвоение данных через вызов методов, ember?, react*)
3) dirty-checking (angular)
4) object.observe
Каждый подход имеет свои плюсы, минусы.
4-й Выглядит как самый "лучший", но его браузеры не поддерживают, 1 и 2 мне не нравится т.к. там приходится использовать разные обертки над данным, это усложняет и замедляет разработку.
Поэтому выбран dirty-checking: поработал с данными - запусти поиск изменений. Это есть и в Angular.js и в Angular Light, только в оригинале это пытаются всяческий спрятать, сделали всякие обертки $timeout, $http... заставляют изучать больше, усложняют контакт с существующим кодом и другими либами.
В Angular Light наоборот, я старался сделать все явным, нужно вызывать $scan когда нужно запустить поиск изменений, единственное* исключение - текущие "событийные" директивы сами вызывают $scan по завершению (пример lega911/angular-light [github.com] )
зачем нужен "al-get-scope" почему не al-controller?
Это просто пример как можно делать "извращения", т.к. Angular Light позиционируется как библиотека с минимумом необходимого (биндинг + diry-checking).
зачем вообще нужен angular light, по мне дак все компы сейчас держат ангуляр вполне нормально, и если руки откуда надо - ничего не тормозит особо.
Дело не в скорости, ведь Angular.js достаточно быстр, дело в скорости разработки, разработчики берут AL и делают продукт, подключают весь свой готовый функционал и другие либы, в то время когда разработчики с Angular.js курят доки, спорят за фабрики и сервисы, гуглят баги как сложить а+б, и т.д.
Ну да, как бы противоречит основному принципу хорошего стиля: Каждый компонент приложения - автономный черный ящик. ))))
Но вдруг спасет кому-то жизнь ...