Ответы пользователя по тегу Angular
  • Как использовать как фильтр для ng-repeat в AngularJs?

    dunmaksim
    @dunmaksim
    Технический писатель
    ng-repeat работает с набором данных. Опишите в контроллере метод, который фильтрует основной набор в зависимости от значения в input'е. Для этого можно использовать $scope.$watch.
    Ответ написан
    Комментировать
  • Из-за чего происходит ошибка в AngularJS?

    dunmaksim
    @dunmaksim
    Технический писатель
    Очевидно же - у вас файл называется questions.js
    Первая строка - <script src="...
    Интерпретатор пытается его выполнить и падает.
    Подключайте скпипты и библиотеки в html-файлах, а не в JS. В случае с Angular забудьте об AMD, либо подумайте о переходе на Dojo или Aurelia.
    Ответ написан
  • Что не так с rout-ингом?

    dunmaksim
    @dunmaksim
    Технический писатель
    Используйте не href, а ng-href - эта штука учитывает особенности работы Angular, например, асинхронную подгрузку значений в список элементов. В остальном всё вроде правильно, за исключением того, что в контроллере Вы используете одну переменную, а в шаблоне выводите значение другой:

    $scope.phoneId = $routeParams.phoneId;
    // Лучше - $scope.routeParams = $routeParams;


    Что имеете

    <a ng-href="#/phones/{{ phone.id }}>Посмотреть</a>

    Что должно быть:

    <a ng-href="#/phones/{{ phoneId }}>Посмотреть</a>

    P. S. Ссылку в кнопку? Почему бы не использовать для кнопок и ссылок-кнопок одни и те же наборы стилей, как это сделано в Bootstrap?
    Ответ написан
    Комментировать
  • Почему не передаются данные в форме?

    dunmaksim
    @dunmaksim
    Технический писатель
    1. Отображайте возможность выбора типа организации прямо в той же форме, где пользователь выбирает, физлицо он или организация. ng-if в помощь.
    2. Вызывать диалоговое окно не стоит, а если уж вызываете, сделайте кнопку отмены.
    3. В диалоговых окнах Angular Material свой $scope. Для правильной обработки используйте такой код:
    $mdDialog.show({
        templateUrl: '/template/dialog.html',
        controller: [ '$scope', '$mdDialog', function($scope, $mdDialog){
            $scope.cancel = $mdDialog.cancel; // Отмена. Ничего сложного.
            $scope.save = function(){
                $mdDialog.hide($scope.model); // Диалог закрывается, promise разрешается моделью
            };
        }]
    }).then(function (model) {
        // Та самая модель, которую возвращает $mdDialog. 
        // При использовании метода cancel() выполняет код для reject
    });
    Ответ написан
    1 комментарий
  • Как передавать данные между контроллерами в angularjs?

    dunmaksim
    @dunmaksim
    Технический писатель
    Создайте сервис, который будет хранить общие для всех контроллеров методы / данные, а потом используйте его. В качестве одного из параметров такой метод может принимать текущий $scope.
    Ответ написан
    Комментировать
  • Как работать с datetime в angularjs?

    dunmaksim
    @dunmaksim
    Технический писатель
    Шаг первый - подключаем к приложению файлы локализации:
    bower install angular-i18n
    Теперь после angular.js подключаем файл локализации в <head>.
    Шаг второй: используем фильтр date:
    <span>{{ item.pub_date | date }}</span>
    Ответ написан
    Комментировать
  • Как в Angular JS получить и отправить изображение?

    dunmaksim
    @dunmaksim
    Технический писатель
    Зачем Вам эта наркомания? Что мешает сделать ng-src, а через GET получать ссылку, а не само изображение? В этом же нет никакого смысла.
    Для загрузки рекомендую вот этот плагин: angular-file-upload
    Пробовал ещё несколько штук разных, но всё не то, по функционалу и близко не подошли.
    Ответ написан
    3 комментария
  • Как получить данные из объекта $resource?

    dunmaksim
    @dunmaksim
    Технический писатель
    Правильно писать так:
    (function(A) {
        "use strict";
        A.module('App').controller('Ctrl', ['$resource', '$scope', functino($resource, $scope) {
            var r = $resource('/api/items/:id/', {
                id: '@id'
            }, {
                update: {
                    method: 'PUT' //Необязательная фича для Django REST Framework
                }
            });
            $scope.loading = true;
            $scope.items = [];
    
            r.query({
                //А можно передать параметры, скажем, limit и offset
            }, function(response) {
                $scope.items = response;
                $scope.loading = false;
            }, function(response) {
                $scope.loadign = false;
                $scope.errors = response.data; // Так DRF отдаёт ошибки
            });
        }]);
    }(this.angular));
    Ответ написан
    4 комментария
  • Как настроить переход между страницами в Angular?

    dunmaksim
    @dunmaksim
    Технический писатель
    Ссылки должны начинаться со знака # или со знаков !#, если нужна поисковая оптимизация, тогда не будет перекидывать. К тому же, используйте ng-href.
    Вот тут явная ошибка:
    <li  ng-repeat="list in lists">
       <a href="/">{{list.name}}</a>
    </li>

    У Вас ВСЕ ссылки будут вести на /. Правильно делать так:
    <li ng-repeat="item in links">
        <a ng-href="#/{{ item.link }}">{{ item.title }}</a>
    </li>

    В свою очередь массив ссылок должен выглядеть примерно так:
    links = [
        { link: 'contacts', title: 'Контакты' },
        { link: 'profile',  title: 'Профиль'  }
    ];
    Ответ написан
    9 комментариев
  • Почему $resource.get() делает 2 запроса?

    dunmaksim
    @dunmaksim Автор вопроса
    Технический писатель
    Тема закрыта. Проблема не в ресурсе, а в контроллере. Если уж используется ngRoute, то контроллер надо указывать либо в роутере, либо в шаблоне, а не в обоих местах.
    Ответ написан
    Комментировать
  • Почему не работает роутинг в angulaJs?

    dunmaksim
    @dunmaksim
    Технический писатель
    При инициализации приложения точно импортируется ngRoute? Плагин angular-route подключен к странице? Кстати, есть ещё плагин angular-router, он нерабочий, насколько я знаю. Путь точно '/login' а не '/login/'?

    На всякий случай мой пример использования ngRoute, полностью рабочий:
    (function(A) {
        "use strict";
        A.module('Administrator',
            [ 'ngCookies', 'ngRoute', 'ngResource', 'ui.layout', 'ui.bootstrap',
            'ui.bootstrap.dropdown', 'ui.bootstrap.modal', 
            'ui.bootstrap.collapse', 'ui.grid', 'ui.grid.selection',
            'ui.grid.resizeColumns', 'ui.grid.autoResize',
            'ui.grid.selection', 'ui.grid.i18n', 'ui.layout',
            'ui.grid.infiniteScroll'])
        .config(function($interpolateProvider, $resourceProvider, $routeProvider) {
            //Не хочу использовать Django-тег verbose
            $interpolateProvider.startSymbol('{$');
            $interpolateProvider.endSymbol('$}');
            $resourceProvider.defaults.stripTrailingSlashes = false;//Иначе POST-запросы не работают, Django же
    
            $routeProvider.when('/category/', {
                templateUrl: '/administrator/template/grid/',
                controller: 'CategoryGridController'
            }).when('/tests/', {
                templateUrl: '/administrator/template/grid/',
                controller: 'TestsGridController'
            });
        })
        .run(function($http, $cookies) {
            $http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken;
            $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
            $http.defaults.headers.common['X-CSRFToken'] = $cookies.csrftoken;
        });
    }(this.angular, this.jQuery));
    Ответ написан
    1 комментарий