Ответы пользователя по тегу Angular
  • Почему в scope не записывается функция?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    кэш браузера.

    p.s. рекомендую вам план изучения ангуляра: ngExam
    Ответ написан
    Комментировать
  • Как отлавливать angular ng-click из элемента circle, созданного с помощью Snap.svg?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    зачем такие сложности? Просто сделайте директивку и там работайте с DOM, навесьте ивент листенер и пробросте клик уже как экшен какой-то.

    ng-click удобный примитив, но если вы начинаете пихать какие-то страшные вещи типа $compile только для того что бы клики обрабатывать и у вас не стандартный ангуляровский темплейт а просто какой-то кусок DOMа - то лучше сделать проще.
    Ответ написан
    3 комментария
  • Как передать данные из rails в angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    angular отдельно - рельсы отдельно, между ними rest/http api.

    Пока хочу создать простой фильтр таблицы.

    И ради этого вы пытаетесь впихнуть туда ангуляр? Мне кажется вы не верно выбираете инструмент.
    Ответ написан
    3 комментария
  • Где хранить состояния интерфейса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Моделей ведь у нас нету, да и хранить это в модели как-то не очень.


    Вы же знаете что такое MVC? вот вам картинка.

    да и хранить это в модели как-то не очень

    Все относительно. В целом да, это лучше хранить во viewmodel. Ну и вы же вкурсе что view не должно напрямую менять model, только через контроллер.
    Ответ написан
    Комментировать
  • Для того ли служит ngTrim в Angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    If set to false Angular will not automatically trim the input. This parameter is ignored for input[type=password] controls, which will never trim the input.

    (default: true)


    https://docs.angularjs.org/api/ng/input/input%5Btext%5D

    неужто не понятно...

    plnkr.co/edit/amM6btWFyqHEku7XY76B?p=preview
    Ответ написан
    1 комментарий
  • Может ли одно angularJS приложение содержаться внутри другого?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нет. делайте все на компонентах. тогда barApp станет зависимостью fooApp, и ng-app заменится на директивы barApp и fooApp соответственно.
    Ответ написан
    1 комментарий
  • Как получить value checkbox-а в angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    почитайте документацию https://docs.angularjs.org/api/ng/input/input%5Bch...
    Ответ написан
    Комментировать
  • Как перестать недоумевать, работая с ангуляром и компонентами?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    в дев панельке в опциях вы же поставили Disable cache?
    Ответ написан
    Комментировать
  • Разумно ли хранить токены в кэше?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Где лучше теперь хранить его на сервере?

    Лучше вообще не хранить его на сервере. Используйте JWT.
    Ответ написан
    Комментировать
  • Как управлять выводом в ng-repeat из другого ng-repeat?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как управлять выводом в ng-repeat из другого ng-repeat?


    ngRepeat это декларативный примитив, вы "управлять" через него ничем не можете и вообще не должны хотеть.

    Вы должны управлять данными, которые вы пихаете во viewmodel ($scope). И только так. То есть по изменению управлящего массива в js формируем новую табличку и ng-repeat просто эту табличку выводит. Все просто и понятно, легко дебажить, минимум кода.
    Ответ написан
    Комментировать
  • Как оптимизировать ionic приложение (android)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    если у вас android 4.4+ то подключаем к компу по USB, открываем ремоут дебагер хрома, подключаемся к приложению и профайлим.

    Универсального решения нет, и да, вам с ionic надо было бы еще разобраться + разобраться с angular.
    Ответ написан
  • Какие есть хорошие книги по mean.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Может хватит использовать mongodb как основное хранилище? Это весьма скверная затея.

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

    сначала изучаем javascript (я как-то подозреваю что вы его не особо знаете)
    - потом... углубляемся в javascript
    - потом учим express.js, попутно постигая тайный смысл аббривиатуры SOLID, изучая ООП, немного функциональщины полезно будет ну и все такое.
    - потом учим angularjs (можно express.js и angularjs поменять местами в принципе, это не столь важно).
    - Ну и еще неплохо изучить базы данных (SQL). Причем монгу оставьте на потом, эта штука клево себя ведет как основное хранилище данных только для записи логов, и в редких случаях, когда вам реально нужна документо-ориентированность (очень редкий кейс). Ну и для ускорения выборок из реляционных баз данных за счет хранения аггрегаций, но для этого должна быть необходимость (много джойнов в выборках например, очень сложные запросы, тогда монгу можно использовать как кэш первого уровня для хранения денормализованной копии данных для упрощения этих сложных выборок).
    Ответ написан
    Комментировать
  • Добавить класс в angularjs?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    <div ng-class="{'active': showFon}">

    в целом же я не вижу смысла что-то еще делать, если класс active должен быть на вешен на элемент всегда когда у вас срабатывает ng-if то... просто добавьте этот класс. Пока у вас не выполняется условия элемент будет убран из DOM.
    Ответ написан
    Комментировать
  • Отображение html тега в angular выражении?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) почему бы этот тег не вынести за биндинг?
    2) ng-bind-html
    Ответ написан
    Комментировать
  • Методы оптимизации AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    меньше длительность $digest цикла - выше производительность и отзывчивость системы. Количество ватчеров к слову тут не причем. Только время за которое они все выполняются влияют (у вас может быть один ватчер который делает что-то сложное, и тысяча простых справятся быстрее).

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

    При выводе больших часто меняющихся коллекций использую track by (весьма редко на самом деле, только когда DOM часто перерисовывается).

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

    Ну и опять же. Никаких преждевременных оптимизаций. Запустите профайлер, найдите узкие места и тогда только думайте.
    Ответ написан
    22 комментария
  • Как добавить условие в ng-repeat (головоломка)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    все просто. Вместо того что бы решать эту головоломку просто подготовьте данные так как вам надо для представления.

    И да, не используйте фильтры для коллекций.
    Ответ написан
    6 комментариев
  • Как перестать вариться в собственном коде?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну про angular styleguide вам уже написали. Так же добавлю что было бы неплохо почитать про SOLID принципы применительно к javascript и в принципе поучить сам javascript. Так же разберитесь наконец что такое MVC (не читайте одну статью, за 40 лет почти эти три буквы для многих стали значить слишком много разного), MVVM и т.д. Так же есть неплохой список вопросов который можно использовать как план изучения angular. Но еще больше профита даст внедрение TDD.

    Раз никто не занимается менторством, то найдите себе оного. И желательно не живого, так как живые менторы склонны к субъективизму.

    Идеальный ментор - юнит тесты. Причем основную ценность для вас они будут представлять когда кода который вы собираетесь тестировать вы еще не писали.

    Скажем вам поставили задачу - написать какую-нибудь штуковину небольшую. Перед тем как садиться и писать, на этапе когда вы хотите обдумать как это будете делать, напишите тест. Если вам не удобно тестировать ваш код, или получается что-то странное, это будет сигналом что что-то пошло не так. Разберитесь что именно мешает. Возможно что-то можно вынести в отдельные сервис или еще что-нибудь эдакое. Возможно ваш тестируемый код берет на себя слишком многое.

    Словом... если тесты легко писать и легко поддерживать - значит у вас все хорошо. Если нет - значит все плохо и надо заниматься чисткой кода. При этом, поскольку ваш код покрыт тестами, вы можете это делать не сильно переживая о регрессиях.

    ну и больше пробуйте, эксперементируйте. А для этого опять же нужны тесты.

    Я для себя сформулировал кое-какие личные правила, которым следую, и это позволяет мне писать тестируемый код. Часть этих правил я уже озвучивал тут.
    Ответ написан
    Комментировать
  • Связка promise и ng-repeat возможно ли?

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

    Попробуйте осознать разницу между императивным построением представления и декларативным описанием представления.
    Ответ написан
    Комментировать
  • Структура проекта Angualr?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Возьмите готовый скелет и не парьтесь + как вам советует Azimov Elbek почитайте angular styleguide.
    Ответ написан
    Комментировать
  • Адекватно ли отправлять данные из директивы сразу в сервис?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Не нарушаю ли я таким образом подход angular-way?

    Вы таким образом нарушаете подход MVC. Команды модели может отдавать только контроллер. На дворе 2015-ый год, скоро выйдут angular1.5 и angular2, пора отвыкать от наследия angular1.0 и 1.1

    1) никаких $scope в контроллерах (читать про controllerAs). По сути единственное место где можно использовать $scope - link директивы (которых при возможности тоже лучше не юзать). Соответственно такие приятные глазу вещи как $scope.$watch тоже лучше используйте только в link

    2) никаких отдельных контроллеров, контроллеры могут быть только у директивы (исключения - тупые контроллеры которые должны замэпить данные из параметров стэйта на директиву, то есть пробросить в атрибуты). Избегать использования module.controller. В целом почитайте про компоненты в контексте angular

    3) избегайте использования в приложении начистую angular API. Все то что со знаком $ (например $http, $sce, etc) должно юзаться в обертке (сервисы-репозитории, фильтры, отдельные мини-сервисы...). Таким образом мы максимально отделяем приложение от фреймворка, и делаем поддержку кода проще (например если вы захотите обновить зависимости, вам не придется переписывать пол приложения из-за каких-то изменений в API, ну и сторонние библиотеки тоже рекомендую заворачивать в обертки-фасады, пряча их от приложения. Опять же по той же причине, с ангуляром ждать сюрпризов редко приходится но вот сторонние библиотеки...).

    4) передавайте данные явно, то есть никаких ивентов, в сервисы (вашу модель) данные должны попадать по прямому вызову метода из контроллера. Тогда дебаг приложение и тестирование оного (вы же когда-нибудь начнете тестить приложения?) не будут вызывать боли. Да и поддержка кода существенно упростится. Исключение опять же - когда ивенты эмитятся и обрабатываются где-то в сервисах, например когда вы используете web-sockets. Тут как бы все с этим хорошо.

    Полезные материалы по теме:

    busypeoples.github.io/post/thinking-in-components-...
    teropa.info/blog/2014/10/24/how-ive-improved-my-an...

    p.s. Это все лишь рекомендации на случай если вы делаете не прототип на коленке а реаьлное приложение. Даже если в ближайшем будущем все это практиковать вам будет не реально (приложение пилится уже давно и переписывать его никто не будет), учтите на будущее.

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