Angularjs не может передать $ routeParams для создания действия $ ресурса - PullRequest
0 голосов
/ 30 сентября 2018

employee.service.js

angular.
  module('core.employee').
  factory('Employee', ['$resource',
    function($resource) {
      return $resource('http://127.0.0.1:8007/api/business/:businessId/employees/:employeeId', {}, {
        query: {
          method: 'GET',
          params: {businessId: '', employeeId: ''},
          isArray: true
        },
        create: {
          method: 'POST',
          params: {businessId: '', employeeId:''}
        },
      });
    }
  ]);

А внутри моего контроллера:

    self.employees = Employee.query({businessId: $routeParams.businessId}, function(employees) {

    });
    self.create = function(){
      Employee.create({
        businessId: $routeParams.businessId,
        email: self.email,
        access: self.access.value
      }).$promise.then(function(employee) {
        self.errorMsg = "";
        self.employee = employee;
      }, function(errResponse) {
        console.log($routeParams.businessId);
        self.errorMsg = errResponse["data"];
      });
    }

currentUrl: http://127.0.0.1:8007/businesses/1/employees/create

Я смог query сотрудников.Но не в состоянии create.Выдается сообщение об ошибке:

angular.js: 13018 POST http://127.0.0.1:8007/api/business//employees/ 404 (не найдено)

Фактический URL для размещения данных должен быть: http://127.0.0.1:8007/api/business/1/employees/

Здесь businessId не передается ресурсу.Но внутри функции, передающей сообщение об ошибке: console.log($routeParams.businessId) выдает 1.

Маршрут внутри config:

when('/businesses/:businessId/employees/create', {
      template: '<employee-create></employee-create>'
    }).

1 Ответ

0 голосов
/ 30 сентября 2018

Вы неправильно подключили $resource для сопоставления параметров запроса с путем запроса.

$resource(
  'http://127.0.0.1:8007/api/business/:businessId/employees/:employeeId',
  // Set up default parameters to extract values from the corresponding
  // properties when the resource is used
  { businessId: '@businessId', employeeId: '@employeeId' },
  {
    query: {
      method: 'GET',
      isArray: true
    },
    create: {
      method: 'POST',
    },
  });

Если сопоставить параметры, из-за отсутствия пути к результирующему пути запроса фрагменты отсутствуют.

В документации для аргументов параметров по умолчанию упоминается это поведение отображения:

Если значение параметра имеет префикс @, то значение этого параметра будетизвлекается из соответствующего свойства объекта данных (предоставляется при вызове действий с телом запроса).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...