вызов службы внутри контроллера в angularjs

0

Я работаю с ng-ресурсом, чтобы делать манипуляции с CRUD следующим образом:

app
.factory('candidatureService',['$resource',
  function ($resource) {
    return $resource('http://localhost:8080/candidature/candidats', {}, {
      update: { method: "PUT"}
    });

  }]);

Мне нужно только PUT в моем случае.

и в контроллере у меня это:

app
  .controller('CandidatureStartCtrl', function ($scope, candidatureService) {


    $scope.candidature = {};
    $scope.candidature.guarantor = {};

    $scope.submitForm1 = function(isValid) {
      console.log('validate form');

      // check to make sure the form is completely valid
      if (isValid) {
        console.log('form 1 is amazing');
        console.log($scope.user);
        candidatureService.update({},{
          "username": "Uchiha",
          "nom": $scope.candidature.lastname,
          "prenom": $scope.candidature.firstname,
          "nomarab": $scope.candidature.arabicLastname,
          "prenomarab": $scope.candidature.arabicFirstname,
          "genre": $scope.candidature.gender,
          "dateNaissance": $scope.candidature.birthdate,
          "email": $scope.candidature.email,
          "telephone": $scope.candidature.phoneNumber,
          "photo": $scope.candidature.photo,
          "cin": $scope.candidature.identityDocumentCode,
          "adresse": $scope.candidature.address,
          "codeMassar": $scope.candidature.codeMassar,
          "lieuNaissance": $scope.candidature.placeOfBirth,
          "cinPhoto": $scope.candidature.identityDocument,
          "anneebac": $scope.candidature.anneebac,
          "nomGarant": $scope.candidature.guarantor.fullName,
          "lienGarant": $scope.candidature.guarantor.link,
          "telephoneGarant": $scope.candidature.guarantor.phoneNumber,
          "province": {
            "codeProvince" : $scope.candidature.province
          }
        });
        $scope.steps.step2=true;
      } else {
        console.log('form is invalid');
      }

    };

  });

username - это первичный ключ в моем случае.

но когда я использую этот контроллер, я получаю это сообщение об ошибке:

TypeError: candidatureService.update is not a function
    at new <anonymous> (http://localhost:8080/app/scripts/controllers/candidature-start.js:106:24)

в моем index.html Я объявил контроллер и службу следующим образом:

<script src="scripts/controllers/candidature-start.js"></script>
<script src="scripts/service/candidatureService.js"></script>

и когда я получаю доступ к своей странице, я вызываю 'CandidatureStartCtrl' который объявлен в candidature-start.js:

.state('candidature.start', {
        url: '/start',
        controller : 'CandidatureStartCtrl',
        templateUrl: 'views/tmpl/frontend/candidature-start.html',
        containerClass: 'hz-menu',
        resolve: {
          plugins: ['$ocLazyLoad', function ($ocLazyLoad) {
            return $ocLazyLoad.load([
              'scripts/vendor/slider/bootstrap-slider.js',
              'scripts/vendor/touchspin/jquery.bootstrap-touchspin.js',
              'scripts/vendor/touchspin/jquery.bootstrap-touchspin.css',
              'scripts/vendor/filestyle/bootstrap-filestyle.min.js'
            ]);
          }]
        }
      })

Так почему я получаю сообщение об ошибке, мне потребовалось 3 часа, но я не мог понять, в чем проблема!

  • 0
    попробуйте return candidatureService.update({},{ "username": "Uchiha", "nom": $scope.candidature.lastname, "prenom": $scope.candidature.firstname, "nomarab": $scope.candidature.arabic....
  • 0
    убедитесь, что вы включили свой сервис в app.module
Показать ещё 1 комментарий
Теги:

1 ответ

0

Имена методов в ваших сервисах получаются с добавлением $, когда вы используете $ resource, поэтому вызов должен быть в candidatureService. $ Update

Ещё вопросы

Сообщество Overcoder
Наверх
Меню