Ответы пользователя по тегу API
  • Как получить данные из формы и отправить их методом put в api?

    Используйте $resource
    var app = angular.module('myApp', []);
    
    app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){
      
      $routeProvider
        .when('/', {
          templateUrl:'template/home.html',
          controller:'UsersCtrl'
        })
        .when('/edit/:userId', {
          templateUrl:'template/edit.html',
          controller:'EditCtrl'
        })
        .otherwise({
          redirectTo: '/'
        });
    }]);
    
    // Создаем фабрику для работы с ресурсом пользователей
    app.factory('UserResource', function ($resource){
        // Возвращаем ресурс, ссылка на документацию выше
        return $resource(
          '/test/users/:action',  // роут для работы
          {id: '@id'}, // поле идентификатор
          {
            update: { // переопределим метод update
              method: 'PUT', // тип запроса
              params: {action: 'edit'} // параметр action в роуте
            },
          }
        );
      });
    
    // Контроллер списка пользователей
    app.controller('UsersCtrl', function ($scope, UserResource) {
      // запрос на список пользователей
      $scope.users = UserResource.query();
    });
    
    // Контроллер редактирования пользователя
    app.controller('EditCtrl', function ($scope, UserResource, $routeParams) {
      // Загружаем текущего пользователя по ид из роута
      $scope.user = UserResource.get({id: $routeParams.userId});
    
      // Функция сохранения пользователя, form - объект формы
      $scope.saveUser = function(form){
        // Вызываем переопределенный метод update
        UserResource.update($scope.user)
          .$promise
          // Ловим ошибки
          .catch(function(err){
            console.error(err);
          });
      };
    });


    Содержимое template/home.html
    <ul>
      <li ng-repeat="user in users"><a href="/edit/{{user.id}}">{{user.name}}</a></li>
    </ul>


    Содержимое template/edit.html
    <form class="form" name="form" ng-submit="saveUser(form)" novalidate>
      <input type="text" ng-model="user.name">
      <button class="btn btn-default" type="submit" ng-disabled="form.$invalid">Сохранить</button>
    </form>


    index.html
    <!DOCTYPE html>
    <html lang='en' ng-app='myApp'>
    <head>
      <meta charset="utf-8">
      <title>Angular App</title>
    
      <script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js'></script>
      <script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular-route.min.js'></script>
      <script src='app/app.js'></script>
      
    </head>
    <body>
    <ng-view></ng-view>
    </body>
    </html>


    UPD: Добавлена форма
    UPD2: Добавил комментарии
    UPD3: https://plnkr.co/edit/LTTkrd3NbSSxC7ZKw9GJ?p=preview
    Ответ написан
    2 комментария
  • Yandex.Maps API 2.0 почему ошибка Uncaught TypeError в методе geoObjects?

    Скорее всего при копипасте не проверяете имена переменных.
    // добавляем маршрут на карту
    map.geoObjects.add(route);
    // UDP
    ymaps.route(
     ...
    ).then(function (route) {
        ...
        // this в этом контексте является не тем объектом, о котором Вы думаете и у него нет свойства _map
        map.geoObjects.add(route);
     });

    Ошибка означает: Нет свойства geoObjects у объекта undefined. А undefined это значит, что переменная map не определена.
    Ответ написан