• Как сделать глобальные GET-параметры?

    ozknemoy
    @ozknemoy
    яваскриптист
    не совсем ясно что надо, но можно посоветовать использовать interceptors и настроить обработчик на каждый get запрос.
    Ответ написан
    Комментировать
  • Как динамически подгрузить всплывающее окно в AngularJS?

    ozknemoy
    @ozknemoy
    яваскриптист
    все просто. при клике открываем кусок дома
    <button ng-click="i.show=1">button</button>
    <span class="elem_list--descr--footer--item foot1"
                                      ng-if="i.show==1">
                                    <i class="icon clock"></i>
                                    <span>{{::i.remain}}</span>&thinsp;{{::i._remain}}&nbsp;осталось
                                </span>

    вместо спан использовать модальное окошко. плюс можно глянуть ng-bind-html в паре с $sce.trustAsHtml
    Ответ написан
  • Как строить архитектуру приложения на angular при компонентном подходе?

    ozknemoy
    @ozknemoy
    яваскриптист
    глянь структуру реального проекта. это часть index.html. в ui-view тоже есть свои состояние. там можно городить что твоей душе угодно
    <div  id="wrapper">
        <aside id="sidebar-wrapper">
            <menu-toggle close="1" class="sidebar_navigation">
                <a ui-sref="projects" ui-sref-active="current" class="sidebar_navigation--link">
                    <span class="sidebar_navigation--icon icon1"></span>Проекты</a>
                <a  ui-sref="users" ui-sref-active="current" class="sidebar_navigation--link">
                    <span class="sidebar_navigation--icon icon2"></span>Пользователи
                </a>
                <a ui-sref="help({'id':'a1'})" class="sidebar_navigation--link">
                    <span class="sidebar_navigation--icon icon4"></span>
                    О CONSTART
                </a>
                <!--<a ui-sref="help({'id':'a3'})" class="sidebar_navigation&#45;&#45;link">
                    <span class="sidebar_navigation&#45;&#45;icon icon6"></span>
                    Стоимость услуг
                </a>-->
                <a ui-sref="help" class="sidebar_navigation--link">
                    <span class="sidebar_navigation--icon icon5"></span>
                    Помощь
                </a>
            </menu-toggle>
    
            <div class="sidebar--footer">
                <div class="social">
                    <a href="https://vk.com/constartru" target="_blank" class="vk"><i class="fa fa-vk"></i></a>
                    <a href="https://www.instagram.com/constart.ru/" target="_blank" class="in"><i class="fa fa-instagram"></i></a>
                    <a href="https://www.youtube.com/channel/UCOxuxxrAhiKB1U0RYQPB5FA" target="_blank"><i class="fa fa-youtube"></i></a>
                </div>
    
                <div class="copyright">&copy; 2016 CONSTART <br> ООО "Констарт"</div>
            </div>
    
        </aside>
        <nav-bar class="navigation"></nav-bar>
    
        <section id="page-content-wrapper">
    
             <ui-view></ui-view>
    
        </section>
    
        <footer>
            <div class="footer_wrap">
                <div class="footer--links">
                    <p><a ui-sref="help({'id':'a1'})">О CONSTART</a></p>|
                    <p><a ui-sref="help({'id':'a8'})">Контакты</a></p>|
                    <!--<p><a ui-sref="help({'id':'a3'})">Цены на услуги</a></p>|-->
                    <p><a ui-sref="help">Помощь</a></p>|
                    <p><a ui-sref="help({'id':'u1'})">Правила пользования платформой</a></p>|
                    <p><a ui-sref="help({'id':'a64'})">Пользовательское соглашение</a></p>
                </div>
                <div class="social">
                    <a href="https://vk.com/constartru" target="_blank" class="vk"><i class="fa fa-vk"></i></a>
                    <a href="https://www.instagram.com/constart.ru/" target="_blank" class="in"><i class="fa fa-instagram"></i></a>
                    <a href="https://www.youtube.com/channel/UCOxuxxrAhiKB1U0RYQPB5FA" target="_blank"><i class="fa fa-youtube"></i></a>
                </div>
            </div>
        </footer>
    
    </div>
    <toast></toast>
    <scroll-up class="btn_up"></scroll-up>
    Ответ написан
    1 комментарий
  • Как запустить Angular Universal чтобы не хотелось кинуть камень в того, кто это придумал?

    ozknemoy
    @ozknemoy
    яваскриптист
    пользую universal-starter месячной давности полет нормальный
    Ответ написан
  • Как заставить скомпилированный проект на Angular2 брать настройки из json-файла?

    ozknemoy
    @ozknemoy
    яваскриптист
    в первом ангуларе был $http.json метод. во втором он тоже вроде как есть: this.http.get('app/heroes.json')
    Ответ написан
  • Как вызвать валидацию?

    ozknemoy
    @ozknemoy
    яваскриптист
    без кода трудно что то сказать. непонятно почему валидация одного поля должна запускать другую. валидация то ангуларовскими встроенными методами?
    вот код на подумать. тут 2 мыла должны совпасть
    <form name="rl.form">
            <div class="form-group">
                <label for="">Введите email :</label>
                <input type="email" class="form-control" required name="email"
                       ng-change="rl.check()"
                       ng-cut="$event.preventDefault()"
                       ng-copy="$event.preventDefault()"
                       ng-paste="$event.preventDefault()"
                       ng-model="rl.email">
            </div>
            <div class="alert alert-danger"
                 ng-if="rl.form.email.$touched && (rl.form.email.$error.required ||
                     rl.form.email.$error.email)">Введите правильный E-Mail
            </div>
            <div class="form-group">
                <label for="">Введите повторно e-mail (во избежание ошибки или опечатки):</label>
                <input type="email" class="form-control" required name="emailTwo"
                       ng-change="rl.check()"
                       ng-cut="$event.preventDefault()"
                       ng-copy="$event.preventDefault()"
                       ng-paste="$event.preventDefault()"
                       ng-model="rl.emailTwo">
            </div>
            <div class="alert alert-danger"
                 ng-if="rl.form.emailTwo.$touched && (rl.form.emailTwo.$error.required ||
                     rl.form.emailTwo.$error.email)">Введите правильный E-Mail
            </div>
            <div class="alert alert-danger" ng-if="rl.emailNotEqual">
                Почтовые ящики не идентичны
            </div>
            <div class="alert alert-danger" ng-if="rl.emailOccupied">
                Такой пользователь уже зарегистрирован
            </div>
    
            <div class="alert alert-success" ng-show="rl.allOk">
                Почтовые ящики идентичны
            </div>
        </form>

    тут при каждом изменении мыл я стучусь в контроллер и проверяю совпадают ли они
    Ответ написан
    1 комментарий
  • Почему при клике по ссылке не отправляется запрос на сервер?

    ozknemoy
    @ozknemoy
    яваскриптист
    <a href ng-click="$ctrl.logout()">....
    в контроллере
    this.logout = function() {
        httpService.post('').then(/*logout angular front and refresh page*/)
    }
    Ответ написан
    Комментировать
  • Как вынести css стили генерируемые Angular2 в отдельный css файл?

    ozknemoy
    @ozknemoy
    яваскриптист
    как в старые добрые времена, отдельно от вебпака и подобных не подходит? я верстку не делаю, поэтому у меня один отдельный файл компилируемый из sass и нету треша в хедере
    Ответ написан
    Комментировать
  • Как правильно мигрировать на другую версию AngularJS?

    ozknemoy
    @ozknemoy
    яваскриптист
    больших подводных камней нету. вот то что я у себя добавил с версии 1.5.8
    $qProvider.errorOnUnhandledRejections(false);//for fix 4 errors in angular 1.6
        $compileProvider.commentDirectivesEnabled(false);//for angular 1.6
        $compileProvider.cssClassDirectivesEnabled(false);// надо сначала удалить директиву ui-view в классе
    $compileProvider.preAssignBindingsEnabled(true); //todo for angular 1.6

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

    ozknemoy
    @ozknemoy
    яваскриптист
    webpack dev server с Hot Module Replacement
    Ответ написан
    Комментировать
  • AngularJS добавление ng-controller и нового контроллера через определенное время спустя загрузки страницы?

    ozknemoy
    @ozknemoy
    яваскриптист
    лучше использовать компоненты. в зависимости от типа svg кидать через bindings внутрь компонента параметры. например
    html:
    <foto-editor
       foto-emit-callback="ctrl.setFotoUrl(id,url)"
       modal-parent-id="{{$ctrl.idCroppedImg}}"
       area-type='circle'
       foto-w='{{$ctrl.widthFromParentCtrl}}'
       foto-h='{{$ctrl.heightFromParentCtrl}}'
    >
    </foto-editor>
    
    js
    var fotoeditorComponent = {
        bindings: {
            fotoEmitCallback: '&',
            modalParentId: '@',
            fotoW: '@',
            fotoH: '@',
            areaType: '@?'
        },...
    };

    ну и лучше сразу не приучать себя к $scope. это уже лагаси код
    Ответ написан
    Комментировать
  • Почувствовали ли вы разницу с AoT и JIT компиляцией при работе с Angular 2?

    ozknemoy
    @ozknemoy
    яваскриптист
    сори за офтоп, но не удержался. не вижу разницы рендеринга настроенного ангулара 1 и ангулара 2 из коробки. тест тоже это показывает https://auth0.com/blog/updated-and-improved-more-b...
    при чем в тесте применили всего одну оптимизацию
    Ответ написан
  • Когда следует использовать angular?

    ozknemoy
    @ozknemoy
    яваскриптист
    на проектах от среднего. но! есть проблемы с серверным рендерингом. но судя по инфе это решаемо. в остальном нерешимых вопросов не заметил. скорость если уметь готовить можно поднять. тк из коробки там не настроено ничерта почему то. вообще пописав на фреймворке(не на библиотеке), понимаешь что сайт на чистом js или jq это треш, но кому то нравится. хотя судя по stackoverflow люди и на ангуларе треш умеют делать
    видимость элементов это мелочь. роутер всего лишь разруливает навигацию по сайту . без нее банально никак. просто вынесено в отдельные модули чтобы люди выбирали кому какой нравится. но есть и резолвы и дочерние вью и еще разные плюшки
    Ответ написан
    Комментировать
  • Где можно закрепить тонкости языка JavaScript?

    ozknemoy
    @ozknemoy
    яваскриптист
    можно конечно выпускников вузов потестировать на знание этой ерунды выше. но в проде то как это пригодится?
    Ответ написан
    3 комментария
  • Что такое bindings в компонентах AngularJS?

    ozknemoy
    @ozknemoy
    яваскриптист
    это просто аналог scope который в директивах
    one-way : '<'
    interpolation : '@'
    и callback в родителя : '&'
    Ответ написан
    Комментировать
  • Как и где собрать команду для стартапа?

    ozknemoy
    @ozknemoy
    яваскриптист
    если бесплатно или за идею то например можно подключить людей которые учатся чему то новому в разработке. ну типа бекенд учит фронтенд и тд. и им новый опыт и может что получится в стартапе. абсолютных новичков конечно набирать смысла нет. учу сейчас бек. за плечами большой опыт фронта. ну вот вообще плохо идет. потому что нет стимула. хочется что то реальное, которое не выкенешь через месяц
    Ответ написан
    Комментировать
  • Как сдедать промотку на 30px ниже?

    ozknemoy
    @ozknemoy
    яваскриптист
    повесить слушателя на клик по элементу и скормить ему функцию
    function scrollTo (id) {
            var y = $('#'+id).position().top;
                y = y+30;
            scrollTo(y, 800);
            //тут клик по табу $('a[href=\'#specification\']').trigger('click');
        };

    id это цель. y это расстояние от верха страницы до цели + 30px
    scrollTo это кастомная функция прокрутки. если нет своей, то вот код с requestAnimationFrame :
    Math.easeInOutQuad = function (t, b, c, d) {
            t /= d/2;
            if (t < 1) {
                return c/2*t*t + b
            }
            t--;
            return -c/2 * (t*(t-2) - 1) + b;
        };
    var requestAnimFrame = (function(){
            return  window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function( callback ){ window.setTimeout(callback, 1000 / 60); };
        })();
    
        function offsetPosition(element) {
            var offsetLeft = 0, offsetTop = 0;
            do {
                offsetLeft += element.offsetLeft;
                offsetTop  += element.offsetTop
            } while (element = element.offsetParent);
            return [offsetLeft, offsetTop]
        }
    function scrollTo(to, duration, callback) {
            if(!to) return;
            // если передаю ид элемента а не число
            if(typeof to === 'string') {
                to = offsetPosition(document.querySelector(to))[1]
            }
    
            // because it's so fucking difficult to detect the scrolling element, just move them all
            function move(amount) {
                document.documentElement.scrollTop = amount;
                document.body.parentNode.scrollTop = amount;
                document.body.scrollTop = amount;
            }
            function position() {
                return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop;
            }
            var start = position(),
                change = to - start,
                currentTime = 0,
                increment = 20;
            duration = (typeof(duration) === 'undefined') ? 500 : duration;
            var animateScroll = function() {
                // increment the time
                currentTime += increment;
                // find the value with the quadratic in-out easing function
                var val = Math.easeInOutQuad(currentTime, start, change, duration);
                // move the document.body
                move(val);
                // do the animation unless its over
                if (currentTime < duration) {
                    requestAnimFrame(animateScroll);
                } else {
                    if (callback && typeof(callback) === 'function') {
                        // the animation is done so lets callback
                        callback();
                    }
                }
            };
            animateScroll();
        }
    Ответ написан
    Комментировать
  • Как научиться быстро читать?

    ozknemoy
    @ozknemoy
    яваскриптист
    быстрочтение помогает ТОЛЬКО для чтения бульварных газетенок, красочных журналов и худлита. серьезные материалы, для обучения, вникания и тд порой даже на обычной скорости не почитать
    Ответ написан
    13 комментариев
  • Подкиньте книжек или видео уроков по yii2?

    ozknemoy
    @ozknemoy
    яваскриптист
    советую этот ресурс https://github.com/githubjeka/yii2-tutorial
    Ответ написан
    Комментировать
  • Где взять gulp скрипты для разработки angular-приложения с модулями?

    ozknemoy
    @ozknemoy
    яваскриптист
    можно глянуть на гите NG6-starter-master или NG6-todomvc-starter или другие сборки у того же автора ( https://github.com/AngularClass/NG6-starter/blob/m... ) и допилить их под себя. есть ещё yeoman angular. templateCache реально увеличивает быстродействие? думаю попробовать его, но не очень хочется увеличивать время первичной загрузки
    Ответ написан
    Комментировать