• Не появляется отображается в директиве информация, что делать?

    @bromzh
    Drugs-driven development
    Прежде чем что-то писать дальше на ангуляре, советую изучить styleguide и следовать ему.
    Особенно плохи такие вещи:
    1) использование .success/.error вместо .then в $http; Они давненько deprecated. Только .then.
    2) создание лишних deferred-объектов. метод .then() и так вернёт промис.
    3) в методе .getOrders твоего сервиса в одном случае возвращается промис, а в другом просто null. всегда возвращай промис. просто там, где всё плохо нужно делать reject
    4) сохранять список в сервисе, а потом искать элемент по id в нём не самая хорошая идея. нужно всегда запрашивать с сервера свежие данные
    В общем, твой сервис должен выглядеть примерно так:
    ordersFactory.$inject = ['$http', '$q', 'AuthService'];
    function ordersFactory($http, $q, AuthService) {
        return {
            getList: getList,
            
        };
    
        function getList() {
            // лучше, чтобы был промис
            // Выстраиваем цепочку промисов
            return AuthService.isAuthorized()  
                .then(() => $http.get('/api/orders'))  // тут шлём запрос, 
                .then(response => response.data);     // bи просто возвращаем данные ответа
                // в итоге, сервис зарезолвит промис и вернёт данные 
                // только если все в цепочке промисов зарезолвят их
                // если где-то будет reject, то его можно будет отловить выше
                // либо можно отловить reject тут и что-то сделать, тут уж тебе решать
        }
    
        function getById(id) {
            AuthService.isAuthorized()  // лучше делать запрос на сервер, чем пытаться найти в массиве
                .then(() => { $http.get('/api/orders/' + id))                  
                .then(response => response.data);
        }
    
        function getByIdInList(id) { // но если сильно хочется искать элемент на клиенте
            return getList()         // то лучше сделать так
                .then(orders => { // обрабатываем данные, полученные из getList 
                                          // при условии, что они зарезолвятся
                    // тут ищем
                    for (let i = 0; i < orders.length; ++i) {
                        if (orders[i].id === id) {
                            return $q.resolve(orders[i]);
                        }
                    }
                    return $q.reject();
                });
            
        }
    }

    Ну и если ты не работаешь с DOM, функция линк не нужна, контроллера директиве хватит.

    Ну а ответ на твой вопрос кроется тут:
    vm.setOrder = (id) -> 
        vm.order = OrderService.getOrderId(vm.index)


    Получения списка заказов - асинхронная функция, завёрнутая в промис. После выполнения в сервисе у тебя будет список заказов. Но функция getOrderId - синхронная и работает без промисов.
    Это неправильно. Если хоть она функция в цепочке вызовов асинхронная и возвращает промис, то нужно выстроить цепочку промисов, и в контроллере в .then уже присваивать полученные данные.

    В итоге, при загрузке страницы у тебя просто может не быть списка заказов.

    Если взять мой сервис, то в контроллере надо так:
    OrderController.$inject = ['OrderService'];
    function OrderController(OrderService) {
        var vm = this;
    
        OrderService.getOrderId(vm.index)
            .then((order) => {
                vm.order = order;
            })
            .catch(() => {
                vm.message = 'Заказ не найден';
            });
    }
    Ответ написан
    Комментировать
  • Как в django реализовать поиск в админке по объектам ForeignKey?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    Ответ написан
    Комментировать
  • Как заменить субстроку в Python, сохраняя часть этой строки?

    @nirvimel
    import re
    string = "(cos(0) + sin(180)) * tan(45.0) + not_a_tan(1)"
    print re.sub(r'\b(cos|sin|tan)\s*\(\s*(\d+(?:\.\d+)?)\s*\)', r'\1(degres(\2))', string)

    Корректно обрабатывает целые и дробные числа.
    Не реагирует на другие функции, заканчивающиеся на cos, sin или tan.
    Заодно подправляет расстановку пробелов.
    Ответ написан
    Комментировать
  • Как сделать якорные ссылки с AngularJS?

    Тут всё не очень просто.
    Есть вот такой сервис: https://docs.angularjs.org/api/ng/service/$anchorScroll
    С помощью него можно делать что-то такое:
    <div ng-click='scrollTo("info")'>go to info</div>
    // some controller
    ['$scope', $anchorScroll, function($scope, $anchorScroll) {
        $scope.scrollTo = function(id) {
            $location.hash(id);
            $anchorScroll();
        }
    }];

    Если хеши везде используются только в случае якорей - можно повесить обработку на событие onLocationChangeSuccess.
    $rootScope.$on('$routeChangeSuccess', function(newRoute, oldRoute) {
        if($location.hash()) $anchorScroll();  
    });
    Ответ написан
    Комментировать
  • AngularJS Как у url изменять get параметры и их считывать?

    @bromzh
    Drugs-driven development
    Гугл запретили?
    https://github.com/angular-ui/ui-router
    christopherthielen.github.io/ui-router-extras/#/home

    Соответственно роутинг я не использую.

    А зря.
    Ответ написан
    Комментировать
  • Как запускать функцию через определенное время в Django проекте с помощью UWSGI?

    для такого простого случая https://docs.djangoproject.com/en/1.8/howto/custom...
    просто в самой джанге напишите команду, и запускайте кронтабом, проверенное замечательное средство.
    Ставить отдельные решения, в таком простом случае совершенно не требуется, и будет только оверхедом.
    Ответ написан
    Комментировать
  • Как запускать функцию через определенное время в Django проекте с помощью UWSGI?

    @Skver0
    я запускал этой апишкой
    https://github.com/kraiz/django-crontab
    Ответ написан
    Комментировать
  • Как запускать функцию через определенное время в Django проекте с помощью UWSGI?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    Ответ написан
    Комментировать
  • Среда разработки битрикса. Для чего он нужен и какие у него преимущества?

    un1t
    @un1t
    Аторы Битрикса врядли слышали слова типа ORM, Git и TDD, и расчитан он на кодеров которые их тоже не знают.

    1. Никак не помогает, только мешает дурацким API, дурацкой структурой БД, очень медленной скоростью, деревянной системой шаблонизации, тем что страницы хранятся в текстовых файлах и т.п…
    2. Ни один нормальный нормальный разарботчик с этой штукой долго работать не будет, работают с ней только кодеры. А разработчики из таких проектов быстро сваливают.
    3. ИМХО нет таких случаев, единственный случай если только вы уже неделю не ели, денег нету и это единственная работа в городе.

    Код битрикса представляет собой спагетти и голимый копи-паст. Есть например модуль sale.ajax.order не помню точно название, там более 1500 строк кода более 8 уровней вложенности и не одной функции. Логика работы этого модуля также очень-очень странная, я вообще не смог понять как разработчики до этого додумались и почему нельзя было сделать нормальную логику.
    Ответ написан
    1 комментарий