Ответы пользователя по тегу Angular
  • Существует ли литература по созданию приложений в связке symfony2 и angularjs?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Но вот как правильно создавать SPA приложения с помощью этих фреймворков


    По отдельности. Сервер на symfony, клиент на angular. Это разные части проектов, по сути это два разных приложения. У них нет общих частей, со стороны сервера у вас только REST или JSON RPC API. Клиент даже не знает что сервер на пыхе написан. Далее обычно прописывается конфигурация nginx-а так, что скажем запросы на /api/ идет на симфони, а все остальное перебрасывается на angular.

    Вот такие дела.
    Ответ написан
    Комментировать
  • Как связать angular-сервис с внешним асинхронным модулем?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    использовать $watch на $rootScope

    у вас там событие запускается, а не состояние объекта меняется. Хватит везде и всюду пихать ватчи

    notify через promise

    Он не для этого. Он для того что бы уведомить что скоро будет resolve.

    события $emit, $broadcast

    именно так. Можно сделать свой изолированный скоуп что бы гонять события только между двумя компонентами, не затрагивая остальную систему.
    Ответ написан
    1 комментарий
  • Есть ли в ангуляре не отлеживаемый аналог ngBind?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Комментировать
  • Как в Angular пересчитывать данные на странице?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    делать это в контроллере, а не во вьюшках, а во вьюшках только ng-model и никаких формул во вьюшках.

    пример (этот же способ предлагал @kirill-93)

    Профит - можно удобно и красиво покрыть это дело тестами, все предсказуемо, удобно писать да и производительность такого решения намного лучше. Ну и да, по мере усложнения формул, зависимостей элементов и т.д. это все намного удобнее разруливать.
    Ответ написан
    1 комментарий
  • Как организовать приложение?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если мы говорим только о том как сказать приложению что что-то случилось, например пришла какая-то нотификашка, то тут проще всего использовать события через $rootScope.

    Насильно пихать изменения с сервера на клиент не очень удачная идея, лучше уведомить о том что что-то случилось а потом просто забрать данные запросом с клиента. То как вы организуете иерархию событий это уже ваше дело, это дело бэкэнда. Скажем событие вида ProjectUpdated не имеет смысла, так как не характеризует это событие. А вот MemberJoined это уже норм, можно наследовать по сути от ProjectUpdated и таким образом создавать какую-то иерархию. Но двух событий на одно действие действительно быть не должно, просто события должны быть осмысленными.

    На клиент можно передавать просто событие, и добавлять его тип. Тогда листенер будет один а потом это все будет как-то разруливаться в приложении.

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

    Далее без конкретики сложно.
    Ответ написан
    3 комментария
  • Как сделать скрнишот страницы или модального окна с помощью AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    используя AngularJS

    напишите сервис или директиву. Внутри используйте html2canvas. Других вариантов особо нет, скриншет вы не сможете сделать, а вот отрендрить в канву - можно.
    Ответ написан
    Комментировать
  • Как выглядят задачи по AngularJS на фрилансе?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    SPA, гибриды (cordova/phonegap), админки... как-то так.

    Добавьте в ваши скилы умение писать тесты.
    Ответ написан
  • Как правильно сделать гибрид SPA и классики?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    на сервере REST, клиент ничего не знает о сервере кроме того что там REST. То есть никакого html на сервере. все на клиенте. С сервер плюется json-ном.
    Ответ написан
    7 комментариев
  • Когда лучше использовать injector а когда просто перечислить как аргумент функции?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    так, начнем с того что есть сервис $injector:

    function SomeController($injector) {
        var service = $injector.get('mainService');
    }
    
    angular.controller('SomeController', ['$injector', SomeController]);


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

    В контроллеры же инджектить инджектор не стоит вообще.
    Ответ написан
    1 комментарий
  • Внутренний модуль, создает 2 скопа?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Я не знаю почему для решения изначальной задачи вы не воспользовались комбинацией ngRepeat + ngTransclude, ну да ладно.

    А клик происходит дважды потому что сначала вашу директиву обработал Angular а потом вы еще раз это дело скомпилили. То есть вы не просто скомпилили, а сделали это с одним и тем же куском DOM, так что все продублировалось. Один из вариантов - сделать клон элементов и тогда уже компилить. Ну или убрать ручной compile из myDirective, он там не нужен. А если нужен - лучше заменить на ngTransclude.
    Ответ написан
    8 комментариев
  • Имеет ли смысл в angular делать какой то сервис для всех других сервисов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    есть такие вещи как пинцип единой ответственности и DRY. В соответствии с ними сервисы и надо проектировать. Контроллеры должны отвечать лишь за связь view и логики, то есть должны быть потоньше.

    Выносить какие-то общие вещи в отдельные сервисы, делать иерархию зависимостей сервисов не настолько линейную - это вообще нормально. Зависит от логики приложения.
    Ответ написан
    1 комментарий
  • Одностраничное приложение только на websocket, делал кто?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Начнем с того что вы сейчас просто выбираете транспорт, либо HTTP либо WebSockets. С концептуальной точки зрения разницы особо нет. В плане производительности - все упрется в выбранную архитектуру.

    По сути, websockets будут продуктивнее работать (если мы не берем в расчет HTTP2), но вам придется реализовывать мультиплексирование запросов/ответов, как-то писать свой протокол поверх и словом куча гемороя. При том что профита по производительности в сравнении со старым добрым HTTP + Keep Alive не так много.

    Для реалтайма - да, конечно же websockets наилучшее решение, но использовать его целиком как транспорт - сомнительное занятие. С другой стороны встречаются уже готовые реализации транспорта на websockets где проблемы, которые я перечислил, уже решены (возможно не полностью но с большего).

    p.s. пробовал делать все на websockets но без мультиплексирования, у меня небыло необходимости разруливать конкурентные запросы или паралельные, все шло через очередь да и задачи были очень простые. А почему был выбран websockets - потому что всеравно использовался а для одного метода еще API писать было лень.
    Ответ написан
    2 комментария
  • Какой аналог jQuery.globalEval есть в AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Аналогов нет. А $eval несколько другая штука.
    Ответ написан
    Комментировать
  • Стоит ли начинать учить Angular 1.x или дождаться 2.x и не забивать себе голову?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    говорят полностью не похож на предыдущий

    С концептуальной точки зрения все то же самое. Просто что-то стало проще, модули заменили на es6 модули, упростили DI, директивы сменились webcomponents и т.д.

    Словом... учите JS и ES2015 (с babel.js) а остальное так.

    По поводу того насколько что отливается - советую посмотреть вот эту презенташку.
    Ответ написан
    Комментировать
  • Каким образом вывести данные в нескольких столбцах?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть допустим 100 разных названий товара, нужно вывести их в 3 столбца.

    а зачем тут таблица? Да и в вашем примере таблицы как бы и нет... Это можно сделать через css

    <div class="col-md-12 product-list" ng-repeat="phone in phones">
       <div class="product">{{phone.name}}</div>
    </div>


    .product-list {
        column-count: 3;
    }


    Для IE9 есть полифил (ну и для хрома он тоже нужен, так как column-gap не поддерживается).

    Если все же хочется именно средствами ангуляра - то по хорошему следует сделать директиву, которая будет резать коллекцию на три части и выводить. Но это сложно, если делать именно по феншую. А можно фигнуть фильтром, это не очень хорошо зато влоб.
    Ответ написан
    Комментировать
  • Стоит ли начинать проект на Angular?

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

    Что до Angular2 - он еще не скоро будет стабильным, да и если будете соблюдать рекоммендации из angular styleguide и будете использовать es2015 (babel.js), то проблем с миграцией будет не так много, если оно вам вообще нужно будет.

    У Meteor вообще чуть другая концепция. Там основная фишка - один код на клиенте и на сервере. Но это накладывает свои ограничения.

    Polymer - няшка. но это только UI. Сверху вам всеравно придется что-то еще использовать.
    Ответ написан
    Комментировать
  • Как получить доступ к дочерним элементам в директиве?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну так вы всю ноду заменяете на темплейт.

    Если вы хотите сохранить содержимое - используйте transclude
    Ответ написан
    2 комментария
  • Что учить, не могу определиться!?

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

    Берусь за jquery, json, sass,lessи ничего толком выучить не могу

    Учить JSON? бред. Осоздайте необходимость появления форматов типа JSON/XML/etc. Целенаправленно учить less/sass, то же не ок. Учите CSS (less/sass/postcss это лишь инструменты которые позволяют вам более грамотно организовать ваш код), и не в плане свойства/селекторы, а в плане подходов к верстке (БЭМ, MCSS и т.д.). Ну и да, заучите что такое DRY и почему вообще возникла необходимость в инструментах типа less/sass.

    ajax

    Не изучайте AJAX, изучайте HTTP. Тогда будет проще отделить реализацию от общей концепции. Хватит бездумно говорить "сделаю AJAX запрос", давайте говорить "сделаю HTTP запрос".

    короче направление простое - когда у вас будет более мение стабильный фундамент - то можно приступать к более высокоуровневым вещам.
    Ответ написан
    15 комментариев
  • А не поможете разобраться с $resource и серверным ответом?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    скорее всего сервер редеректнул вас на server-error, и запрос по редиректу шел уже по GET
    Ответ написан
    1 комментарий
  • Как в AngularJS сделать формы неактивными во время сабмита (глобально)?

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

    stackoverflow.com/questions/24119329/fieldset-and-...

    Можно написать директиву для формы, можно определить директиву fieldset что бы не менять разметку...

    Если для формы, вы можете назначать атрибуту промис, и внутри директивы трекать что когда закончится. По окончанию действия ресетить промис и ждать следующего. Ну и т.д. Так можно почистить контроллер от ненужных вещей.

    Пример
    Ответ написан