ФорумПрограммированиеJavaScriptAngularJS → Angular Light scope.$scan - нахуа?

Angular Light scope.$scan - нахуа?

  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 7 сентября 2015 г. 8:27

    Вот это ваш Alight, и вот такой пример из трех строчек:
    aLight - The Basics - JSFiddle [jsfiddle.net]
    А кто-нибудь понимает нахуй нужен метод scope.$scan (вопрос риторический, я понимаю зачем он нужен, но мне он представляется излишеством).
    И главное есть ли какой-то формальный критерий, когда его надо вызывать, а когда не надо, ибо в некоторых случаях биндинг и без него срабатывает, а в некоторых, как в этом примере, не срабатывает???

    @adw0rd

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 7 сентября 2015 г. 16:51, спустя 8 часов 24 минуты 41 секунду

    @AlexB, $scan это явный способ вызвать digest-цикл и хорошо что он не все время пытается его вызывать (в цикле или по таймауту, или еще как), иначе бы все тормозило конечно. "Самостоятельно" сработает, если ты юзаешь директивы alight (al-text, al-value...), которые сами вызывают $scan, от этого кажется что все работает автоматически, но это не так)

    Ты хочешь чтобы на каждое изменение скопа запускался digest?

    Спустя 162 сек.

    зачем нужен "al-get-scope" почему не al-controller?

    Спустя 42 сек.

    Angular Light [angularlight.org]

    adw/0
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 7 сентября 2015 г. 17:14, спустя 22 минуты 56 секунд

    зачем нужен "al-get-scope" почему не al-controller?

    @adw0rd, я не знаю, это пример из их документации.

    Ты хочешь чтобы на каждое изменение скопа запускался digest?

    Ну как-то в большом Ангуляре все происходит само при присвоении. Я ожидал аналогичного поведения. Да и тут происходит, если не в setTimeout функции это делать.

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 7 сентября 2015 г. 17:19, спустя 4 минуты 39 секунд

    @adw0rd, я не знаю, это пример из их документации.

    @AlexB, дай ссылку, я не смог найти

    Спустя 29 сек.

    Ну как-то в большом Ангуляре все происходит само при присвоении.

    @AlexB, там цикл запускается на любой чих, ты лучше по скорости сравни их

    Спустя 229 сек.

    Да и тут происходит, если не в setTimeout функции это делать.

    @AlexB, как правило да, я уже говорил выше почему (стандартные директивы, контроллер).

    Давай лучше свой пример использования, в котором тебе приходится вызывать $scan

    Спустя 103 сек.

    TL;DR пишешь свою директиву - делать $scan, в других случаях достаточно все делать в контроллере, а не где-то сбору setTimeout менять какой-то скоп

    adw/0
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 7 сентября 2015 г. 17:31, спустя 11 минут 43 секунды

    Angular Light [angularlight.org]
    Здесь пример:
    Publish a scope using a directive

    А мой пример очень похож, у меня тоже setTimeout в своей директиве, только внутри него еще аджакс запрос, который регулярно данные обновляет - суть вся та же. Собственно, вопрос исчерпан, все ясно, ради производительности немного пожертвовали универсальностью.

  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 7 сентября 2015 г. 19:01, спустя 1 час 30 минут 6 секунд

    зачем вообще нужен angular light, по мне дак все компы сейчас держат ангуляр вполне нормально, и если руки откуда надо - ничего не тормозит особо.

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 8 сентября 2015 г. 2:54, спустя 7 часов 53 минуты 3 секунды

    @Ivan., статистика про компы из головы? А если умножить функциональность на 10, то ангуляр станет тормозные в раз 10, тогда ты вспомнишь о alight

    adw/0
  • Oleg

    Сообщения: 11 Репутация: N Группа: Адекваты

    Spritz 8 сентября 2015 г. 3:02, спустя 7 минут 57 секунд

    А кто-нибудь понимает нахуй нужен метод 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 курят доки, спорят за фабрики и сервисы, гуглят баги как сложить а+б, и т.д.

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 8 сентября 2015 г. 3:50, спустя 48 минут 31 секунду

    @Oleg, спасибо!

    adw/0
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 8 сентября 2015 г. 5:15, спустя 1 час 24 минуты 47 секунд

    @Oleg , спасибо! )))

    al-get-scope - забавная фигня, типа можно скопами между разными директивами обмениваться ... )))

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 8 сентября 2015 г. 5:24, спустя 8 минут 22 секунды

    @AlexB, ага, но зачем я пока не понял...

    adw/0
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 8 сентября 2015 г. 5:37, спустя 13 минут 27 секунд

    Ну да, как бы противоречит основному принципу хорошего стиля: Каждый компонент приложения - автономный черный ящик. ))))
    Но вдруг спасет кому-то жизнь ...

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 8 сентября 2015 г. 5:38, спустя 1 минуту 26 секунд

    @AlexB, ну это что-то типа сессий, вроде реквест сам по себе достаточен, но ИНОГДА надо иметь общие данные между реквестами

    adw/0
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 8 сентября 2015 г. 5:40, спустя 1 минуту 24 секунды

    Ну сессия это все-таки внешнее хранилище, а не часть кода.

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 8 сентября 2015 г. 5:42, спустя 1 минуту 50 секунд

    @AlexB, оно может быть в памяти, не обязательно внешнее хранилище, я про "сессию в вакууме"

    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!