Ответы пользователя по тегу Angular
  • Как подсчитать количество отфильтрованных значений в Angular JS (filter)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    сделайте это в директиве, подготовьте данные в контроллере и все. Не надо пытаться сделать это заведомо неудобно и не правильно (с архитектурной точки зрения).
    Ответ написан
  • Есть ли в Angular 1 отдельная система событий?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    в нем подобный функционал имеется только в $scope

    это внутренний механизм, лучше его вообще не использовать просто так.

    Из коробки ничего нет, но есть довольно много модулей.

    p.s. завязывать UI на ивенты не стоит (почитайте про redux и посмотрите ngRedux, там в принципе есть диспатчер экшенов).
    Ответ написан
    21 комментарий
  • Какие теги можно использовать в ionic?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Никаких оганичений. Только здравый смысл.
    Ответ написан
    Комментировать
  • Как повторить последнее действие после обновления refresh token в AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    смотреть angular-http-auth, там есть реализация повторения запросов.

    Но в случае refresh токенов должен быть чуть другой подход. Вы должны написать интерцептор, который перед запросом сам будет проверять, нужно ли обновлять токен, и если да - чейнить промис. То есть рефреш токен должен использоваться до а не после того как зафэйлилась авторизация.
    Ответ написан
    Комментировать
  • Как сравнить элементы в $scope?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    у нас есть один объект, у нас есть другой объект.... сравниваем средствами js.
    Ответ написан
  • Практика с AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    варианты:
    - проект с командой опытных ангулярщиков, где есть код ревью. Как мне кажется это весьма редкий кейс но как по мне наилучший.
    - нанять человека с опытом для того что бы делал код ревью да подсказывал че как. Тут есть риски напороться на мнение одного конкретного человека. Ангуляр можно готовить очень по разному.
    - добавиться в чатик какой (вроде frontend ua и т.д.) и тероризировать сообщество распросами кто как чего готовит и скаким проблемами можно сталкнуться. Дешево и сердито. Можно даже договориться за так о код ревью от пары человек. Обмен опытом и знаниями это хорошо.
    - поковыряться в более современных решениях (например reactjs + redux), дабы было более полное представление о том как готовить ангуляр и получить более полное представление о недостатках первой ветки (во второй проблем вроде навязывания двустороннего дата биндинга уже нет, но второй ангуляр еще в бете и я бы не рекомендовал его использовать для коммерческих проектов еще хотя бы пару месяцев). Все то же что и в реакте можно делать и на ангуляре, просто есть в первой ветке места не очень красивые. Может даже поправят в 1.5 версии, но пока сомнительно.

    Ну и да - рекомендую кодить на angular1 с оглядкой на angular2. stateless-компоненты, односторонний поток данных и все те тренды которые используют все популярные фреймворки. Ну и хотя бы на ES6 все писать (babel) и бандлерами вроде webpack или system.js, с ним готовить ангуляр удобнее. Пример. Ну и тесты, тогда рисков меньше.
    Ответ написан
  • Как настроить REST авторизацию для AngulagJS и Yii2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    и у каждого свой подход

    Пожалуй это ключевая фраза. У каждого на самом деле свой подход. Кто-то делает авторизацию исключительно через Yii и потом аунтентификация проходит тупо по кукам, кто-то использует токены, кто-то JWT. Подходов масса.

    Основное не понимание как на фронте управлять видимостью различных областей.

    У пользователя есть права. Это либо роль, либо список действий которые он может совершать. Словом все примерно как и на бэкэнде. Далее вы можете условия в шаблонах ставить или еще как. Для ангуляра есть несколько подходов организации ACL. В том числе готовых тоже много.

    В какую сторону тут копать?

    Фронтэнд не сильно отличается от бэкэнда. Вспомните как вы делали приложеньки с обычными формачками и т.д. Вот тоже самое, только теперь у вас нет "перезагрузки", то есть приложение живет пока открыта вкладка. Ну и в качестве базы данных у нас HTTP API какое-то. Вот и вся разница.

    Архитектура же приложения примерно такая же. Разве что есть нюансы. UI нужно дробить на независимые маленькие компоненты, желательно не имеющие своего состояния и пробрасывать им оное сверху. Ну и все такое.
    Ответ написан
    4 комментария
  • Выполнение директивы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    используйте ng-click и привязку к состоянию, не работайте с DOM сами.

    Вся суть ангуляра в декларативности вью, то есть никаких попыток самостоятельно что-то поменять в DOM.

    <div class="hide-elements" ng-class="{'your-class-name': vm.some.condition}"></div>
        <button class="add" ng-click="vm.add()">+</button>


    в контроллере меняете состояние компонента и все хорошо.

    Поясню идею, почему это хорошо. Если у вашего приложения нет привязки к DOM и он оперирует примитивами, который предоставляет вам ангуляр (ngHide/ngShow/ngClass/ngRepeat и т.д.) то вам не нужно париться вообще о том как формируется представление. Уменьшается возможность побочных эффектов, отсутствует необходимость покрывать код тестами (ну или волноваться что что-то сломается просто так), достаточно проверить что приложение входит в необходимое состояние а ангуляр вам уже гарантирует что представление под это состояние подстроится так, как вы это задекларировали в шаблонах.
    Ответ написан
    8 комментариев
  • Почему не парсится передача модели в angular.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ну потому что такой синтаксис запрещен для выражений. Читайте окументацию. ng-model использует двусторонний биндинг, так что скобки (сахар для интерполяции значений) нужно убрать.

    p.s. Я настоятельно рекомендую таки почитать документацию к инструментам которые вы используете. ну или видеокурсы хотя бы пройти.
    Ответ написан
    1 комментарий
  • Не работает $compile после запроса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    По после запроса на then почему то не работает и кидает трейс на моменте compileScope.$apply();


    Приведи трейс, я на 90% уверен что у тебя там ошибка вида $digest already in progress.

    Это пожалуй самое гнилое место в ангуляре и я дико рад тому что они избавились от этого во втором. Перед запуском $digest цикла (то что вызывается у $rootScope когда вы делаете apply) надо бы проверить не запущен ли он. Сервис $http автоматически запускает $digest по завершению запроса, если что.

    Самый простой способ обезапасить себя от подобного - использовать сервис $timeout, который является оберткой и сам хэндлит $digest цикл.
    Ответ написан
    6 комментариев
  • Какой фреймворк выбрать для интернет-магазина?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Почитайте про reactjs и redux (reactjs наиболее четко описывает суть компонентов а redux описывает как вообще все это работает в сборе). Какой именно фреймворк или решение вы выберите роли особо не играет, так как почти все приходят к схеме описываемой redux (с минимальными отличиями и изменениями).

    Скажем тот же angular2. На самом деле он не сильно отличается от 1-ой версии, если вы следили за развитием идей и т.д. Скажем компоненты, их форсят во втором ангуляре (а так же в reactjs), но использовать этот подход без боли можно было уже с angular 1.3. Сейчас с angular 1.5 все еще проще. Есть компоненты (как отдельная сущность поверх директив, для angular 1.3-1.4 есть полифил), есть декораторы для компонентов (директивы расширяющие поведение компонентов). Главное не пользоваться контроллерами как независимой сущностью (ну разве что только для ресолва состояний и проброса в компоненты), а внутри компонентов не дергать сервисы для получения состояния (хотя есть опять же исключения).

    далее, ни react ни angular из коробки не предоставляют вам ничего для организации вашего приложения. То есть, штуки типа контейнеров зависимостей и базовые какие-то вещи вроде ангуляровских инфраструктурных сервисов не в счет. У вас полная свобода действий. Хотите мутите нормальный сервисный слой, хотите - практикуйте идеи redux с одним общим состоянием приложения и деревом редьюсеров прокидывающие части состояний по компонентам...

    Словом... все на самом деле не так сильно различается. Оно только кажется так, а идеи сейчас идут примерно одни у теже у всех. Декларативный UI, независимые компоненты, функциональщина...
    Ответ написан
    Комментировать
  • Есть ли библиотека / фреимворк react / angular like?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    angular light, Riot.js
    Ответ написан
    Комментировать
  • Как в Protractor'е организовать тестирование backend запросов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    суть E2E тестов в тестировании всего, никаких моков и стабов (ну стабы можно для каких-то внешний сервисов типа фэйсбука, и то у них есть песочница). Что бы протестировать весь проход, от кнопок на UI до запросов в базу данных на сервере.

    В рамках интеграционных тестов тестировать UI так же смысла не имеет. UI должен быть декларативным, а это значит что там нет инвариантов которые нужно покрывать тестами. То есть по сути нам надо покрывать тестами только сервисный слой и возможно контроллеры.

    Если же вы уж очень хотите потестить UI в интеграционных тестах - ну ок, поднимите отдельный mock сервер которым вы будете управлять из тест сюиты. Благо их много.
    Ответ написан
    2 комментария
  • Какой порядок инициализации в AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Мммм... все инициализируется on demand и асинхронно. То есть сервисы инициализируются по требованию, если вы иньектите их в контроллеры то естественно они инициализируются раньше контроллера (так как это их зависимости). Фильтры инициализируются после компиляции шаблона, и только те что там используются.

    run запускается первым, перед run еще есть фаза конфигурации.

    С учетом всех сложностей вы просто не должны завязывать приложение на это все дело (и это хорошая идея). У вас есть фаза конфигурации где можно еще что-то сделать с контейнером зависимостей например, сконфигурить сервисы, и потом все... только run выполняется первым (причем если он требует сервисы сначала инициализируются они) потом представьте что вы не знаете порядок и т.д.
    Ответ написан
    Комментировать
  • Почему не работает watch в angular.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    если вы меняете данные в коде - просто в месте изменения уведомите что вы что-то поменяли. Если меняете через UI - есть ng-changed. deep watch это мегакастыль который уменьшает контроль и увеличивает вероятность проблем в будущем.
    Ответ написан
  • Как это все работает вместе / путь к триумфу?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Может я просто иду не в том направлении.

    Для того что бы нормально использовать ангуляр у вас должен быть нормальный уровень владения javascript и хотябы минимальное представление о том как строятся приложения.

    https://github.com/gdi2290/ngExam - вот вам список вопросов и план изучения. Ну а для того что бы составить общую картину - рисуйте mind maps.
    Ответ написан
    Комментировать
  • Как заставить $http ангуляра не делать запросы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) делаем свое обертку поверх $http (можно сервис-декоратор).
    2) внутри чейним промисы так, что бы в случае чего откладывать запросы
    3) ...
    4) профит.

    Самый простой же вариант если вам надо сделать это дело глобально - interceptors.

    Как пример реализации можете глянуть angular-http-auth. Там внутри есть внутренняя очередь запросов.
    Ответ написан
  • Какое решение выбрать angular + phonegap + polymer?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но сделать renew на базе polymer с использованием angular(2 будет даже плюсом)?


    Если у вас ангуляр, зачем вам полимер? В этом по сути нет смысла.

    для реализации уже готового проекта

    Вас UI фреймворк интересует? Помимо ionic не так много годных реализаций. Если собираетесь angular2 брать то рекомендую посмотреть вообще в сторону NativeScript а не phonegap. Под фонгапу по сути только ионик сейчас норм.
    Ответ написан
  • Событие загрузки шаблона ng-transclude, для подключения скрипта?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    мне нужно подключить input mask.


    делаем ее директивой, и все хорошо, ангуляр все разрулит. У вас не должно возникать желания что-то самому отлавливать в DOM. Во всяком случае в 99% случаев.

    Все должно быть директивой.
    Ответ написан
    Комментировать