Я работаю с 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 часа, но я не мог понять, в чем проблема!
Имена методов в ваших сервисах получаются с добавлением $, когда вы используете $ resource, поэтому вызов должен быть в candidatureService. $ Update
return candidatureService.update({},{ "username": "Uchiha", "nom": $scope.candidature.lastname, "prenom": $scope.candidature.firstname, "nomarab": $scope.candidature.arabic....
app.module